From 09f4fd4bcdfadb96d44e99285a773c6bab1fe9ee Mon Sep 17 00:00:00 2001
From: "florian.azizian" <florian.azizian@maarch.org>
Date: Thu, 11 Jul 2019 10:19:07 +0100
Subject: [PATCH] FIX #11107 TIME 0:45 improve error return

---
 modules/export_seda/RequestSeda.php           | 10 ++++-----
 modules/export_seda/class/ArchiveTransfer.php |  4 ++--
 .../MessageExchangeReviewController.php       |  8 +++----
 .../ReadMessageExchangeController.php         | 17 ++------------
 .../ReceiveMessageExchangeController.php      | 22 +++++++++++++------
 .../SendMessageExchangeController.php         |  7 +++++-
 modules/sendmail/sendmail_ajax_content.php    |  6 ++++-
 .../controllers/DocserverController.php       |  2 +-
 .../MessageExchangeReviewController.php       |  4 ++--
 .../models/MessageExchangeModelAbstract.php   |  6 ++---
 10 files changed, 44 insertions(+), 42 deletions(-)

diff --git a/modules/export_seda/RequestSeda.php b/modules/export_seda/RequestSeda.php
index e265bcadd34..aa5ade43aee 100755
--- a/modules/export_seda/RequestSeda.php
+++ b/modules/export_seda/RequestSeda.php
@@ -527,7 +527,7 @@ class RequestSeda
             ]);
 
             if (!empty($storeResult['errors'])) {
-                var_dump($storeResult['errors']);
+                return ['error' => $storeResult['errors']];
             }
             $docserver_id = $storeResult['docserver_id'];
             $filepath     = $storeResult['destination_dir'];
@@ -595,18 +595,16 @@ class RequestSeda
             $queryParams[] = $fingerprint;
             $queryParams[] = $filesize;
 
-            $res = $this->db->query($query, $queryParams);
+            $this->db->query($query, $queryParams);
         } catch (Exception $e) {
-            return false;
+            return ['error' => $e];
         }
 
-        return $messageObject->messageId;
+        return ['messageId' => $messageObject->messageId];
     }
 
     public function insertAttachment($data, $type)
     {
-        $docserverControler = new docservers_controler();
-
         $fileInfos = array(
             "tmpDir"      => $data->tmpDir,
             "size"        => $data->size,
diff --git a/modules/export_seda/class/ArchiveTransfer.php b/modules/export_seda/class/ArchiveTransfer.php
index 93af7c9919e..38ace00df04 100755
--- a/modules/export_seda/class/ArchiveTransfer.php
+++ b/modules/export_seda/class/ArchiveTransfer.php
@@ -256,10 +256,10 @@ class ArchiveTransfer
         $messageObject->DataObjectPackage->DescriptiveMetadata->ArchiveUnit[0]->Content->StartDate = $startDate->format('Y-m-d');
         $messageObject->DataObjectPackage->DescriptiveMetadata->ArchiveUnit[0]->Content->EndDate = $endDate->format('Y-m-d');
 
-        $messageId = $this->saveMessage($messageObject);
+        $messageSaved = $this->saveMessage($messageObject);
 
         foreach ($listResId as $resId) {
-            $this->db->insertUnitIdentifier($messageId, "res_letterbox", $resId);
+            $this->db->insertUnitIdentifier($messageSaved['messageId'], "res_letterbox", $resId);
         }
 
         return $result;
diff --git a/modules/sendmail/Controllers/MessageExchangeReviewController.php b/modules/sendmail/Controllers/MessageExchangeReviewController.php
index 5345329e059..98aef93fb1d 100755
--- a/modules/sendmail/Controllers/MessageExchangeReviewController.php
+++ b/modules/sendmail/Controllers/MessageExchangeReviewController.php
@@ -92,7 +92,7 @@ class MessageExchangeReviewController
 
             $reviewObject->MessageIdentifier->value = $messageExchangeData['reference_number'].'_NotificationSent';
             $reviewObject->TransferringAgency = $reviewObject->OriginatingAgency;
-            $messageId = \SendMessageExchangeController::saveMessageExchange(['dataObject' => $reviewObject, 'res_id_master' => $aArgs['res_id_master'], 'type' => 'ArchiveModificationNotification', 'file_path' => $filePath]);
+            $messageExchangeSaved = \SendMessageExchangeController::saveMessageExchange(['dataObject' => $reviewObject, 'res_id_master' => $aArgs['res_id_master'], 'type' => 'ArchiveModificationNotification', 'file_path' => $filePath]);
 
             $reviewObject->MessageIdentifier->value = $messageExchangeData['reference_number'].'_Notification';
 
@@ -106,7 +106,7 @@ class MessageExchangeReviewController
 
             $reviewObject->TransferringAgency->OrganizationDescriptiveMetadata = new \stdClass();
             $reviewObject->TransferringAgency->OrganizationDescriptiveMetadata->UserIdentifier = $_SESSION['user']['UserId'];
-            $sendMessage->send($reviewObject, $messageId, 'ArchiveModificationNotification');
+            $sendMessage->send($reviewObject, $messageExchangeSaved['messageId'], 'ArchiveModificationNotification');
         }
     }
 
@@ -143,10 +143,10 @@ class MessageExchangeReviewController
             $RequestSeda->updateOperationDateMessage(['operation_date' => $dataObject->Date, 'message_id' => $messageExchange->message_id]);
         }
 
-        $messageId = \SendMessageExchangeController::saveMessageExchange(['dataObject' => $dataObject, 'res_id_master' => $messageExchange->res_id_master, 'type' => 'ArchiveModificationNotification']);
+        $messageExchangeSaved = \SendMessageExchangeController::saveMessageExchange(['dataObject' => $dataObject, 'res_id_master' => $messageExchange->res_id_master, 'type' => 'ArchiveModificationNotification']);
 
         return $response->withJson([
-            'messageId' => $messageId,
+            'messageId' => $messageExchangeSaved['messageId'],
         ]);
     }
 }
diff --git a/modules/sendmail/Controllers/ReadMessageExchangeController.php b/modules/sendmail/Controllers/ReadMessageExchangeController.php
index 9b1c3f70bb0..50e51df0215 100755
--- a/modules/sendmail/Controllers/ReadMessageExchangeController.php
+++ b/modules/sendmail/Controllers/ReadMessageExchangeController.php
@@ -20,10 +20,8 @@ class ReadMessageExchangeController
 {
     public static function getMessageExchange($aArgs = [])
     {
-        $errors = self::control($aArgs);
-
-        if (!empty($errors)) {
-            return ['errors' => $errors];
+        if (empty($aArgs['id'])) {
+            return ['errors' => 'id is empty'];
         }
 
         $aDataForm = [];
@@ -98,15 +96,4 @@ class ReadMessageExchangeController
 
         return $aDataForm;
     }
-
-    protected function control($aArgs = [])
-    {
-        $errors = [];
-
-        if (empty($aArgs['id'])) {
-            array_push($errors, 'wrong format for id');
-        }
-
-        return $errors;
-    }
 }
diff --git a/modules/sendmail/Controllers/ReceiveMessageExchangeController.php b/modules/sendmail/Controllers/ReceiveMessageExchangeController.php
index ef681413ab3..353ed16038f 100755
--- a/modules/sendmail/Controllers/ReceiveMessageExchangeController.php
+++ b/modules/sendmail/Controllers/ReceiveMessageExchangeController.php
@@ -69,7 +69,10 @@ class ReceiveMessageExchangeController
         $sDataObject = $res['content'];
         $sDataObject = json_decode($sDataObject);
         
-        self::sendAcknowledgement(["dataObject" => $sDataObject]);
+        $acknowledgementReturn = self::sendAcknowledgement(["dataObject" => $sDataObject]);
+        if (!empty($acknowledgementReturn['error'])) {
+            return $response->withStatus(400)->withJson(["errors" => $acknowledgementReturn['error']]);
+        }
 
         $aDefaultConfig = self::readXmlConfig();
 
@@ -459,7 +462,7 @@ class ReceiveMessageExchangeController
         $acknowledgementObject->TransferringAgency->OrganizationDescriptiveMetadata->UserIdentifier = $GLOBALS['userId'];
 
         $acknowledgementObject->MessageIdentifier->value          = $dataObject->MessageIdentifier->value . '_AckSent';
-        $messageId = \SendMessageExchangeController::saveMessageExchange(['dataObject' => $acknowledgementObject, 'res_id_master' => 0, 'type' => 'Acknowledgement', 'file_path' => $filePath]);
+        $messageExchangeSaved = \SendMessageExchangeController::saveMessageExchange(['dataObject' => $acknowledgementObject, 'res_id_master' => 0, 'type' => 'Acknowledgement', 'file_path' => $filePath]);
 
         $acknowledgementObject->DataObjectPackage = new \stdClass();
         $acknowledgementObject->DataObjectPackage->DescriptiveMetadata = new \stdClass();
@@ -468,7 +471,9 @@ class ReceiveMessageExchangeController
         $acknowledgementObject->DataObjectPackage->DescriptiveMetadata->ArchiveUnit[0]->Content = new \stdClass();
         $acknowledgementObject->DataObjectPackage->DescriptiveMetadata->ArchiveUnit[0]->Content->Title[0] = '[CAPTUREM2M_ACK]'.date("Ymd_his");
 
-        $sendMessage->send($acknowledgementObject, $messageId, 'Acknowledgement');
+        $sendMessage->send($acknowledgementObject, $messageExchangeSaved['messageId'], 'Acknowledgement');
+
+        return $messageExchangeSaved;
     }
 
     protected function sendReply($aArgs = [])
@@ -499,7 +504,7 @@ class ReceiveMessageExchangeController
         $filePath = $sendMessage->generateMessageFile($replyObject, "ArchiveTransferReply", $tmpPath);
 
         $replyObject->MessageIdentifier->value          = $dataObject->MessageIdentifier->value . '_ReplySent';
-        $messageId = \SendMessageExchangeController::saveMessageExchange(['dataObject' => $replyObject, 'res_id_master' => $aArgs['res_id_master'], 'type' => 'ArchiveTransferReply', 'file_path' => $filePath]);
+        $messageExchangeSaved = \SendMessageExchangeController::saveMessageExchange(['dataObject' => $replyObject, 'res_id_master' => $aArgs['res_id_master'], 'type' => 'ArchiveTransferReply', 'file_path' => $filePath]);
 
         $replyObject->MessageIdentifier->value          = $dataObject->MessageIdentifier->value . '_Reply';
 
@@ -512,7 +517,7 @@ class ReceiveMessageExchangeController
 
         $replyObject->DataObjectPackage->DescriptiveMetadata->ArchiveUnit[0]->Content->Title[0] = '[CAPTUREM2M_REPLY]'.date("Ymd_his");
 
-        $sendMessage->send($replyObject, $messageId, 'ArchiveTransferReply');
+        $sendMessage->send($replyObject, $messageExchangeSaved['messageId'], 'ArchiveTransferReply');
     }
 
     public function saveMessageExchangeReturn(Request $request, Response $response)
@@ -547,10 +552,13 @@ class ReceiveMessageExchangeController
             $messageExchange = $RequestSeda->getMessageByReference($dataObject->MessageRequestIdentifier->value);
         }
 
-        $messageId = \SendMessageExchangeController::saveMessageExchange(['dataObject' => $dataObject, 'res_id_master' => $messageExchange->res_id_master, 'type' => $data['type']]);
+        $messageExchangeSaved = \SendMessageExchangeController::saveMessageExchange(['dataObject' => $dataObject, 'res_id_master' => $messageExchange->res_id_master, 'type' => $data['type']]);
+        if (!empty($messageExchangeSaved['error'])) {
+            return $response->withStatus(400)->withJson(['errors' => $messageExchangeSaved['error']]);
+        }
 
         return $response->withJson([
-            "messageId" => $messageId
+            "messageId" => $messageExchangeSaved['messageId']
         ]);
     }
 
diff --git a/modules/sendmail/Controllers/SendMessageExchangeController.php b/modules/sendmail/Controllers/SendMessageExchangeController.php
index 9f05febcf3c..41b7341c5c8 100755
--- a/modules/sendmail/Controllers/SendMessageExchangeController.php
+++ b/modules/sendmail/Controllers/SendMessageExchangeController.php
@@ -151,7 +151,12 @@ class SendMessageExchangeController
             $filePath = $sendMessage->generateMessageFile($dataObject, "ArchiveTransfer", $_SESSION['config']['tmppath']);
 
             /******** SAVE MESSAGE *********/
-            $messageId = self::saveMessageExchange(['dataObject' => $dataObject, 'res_id_master' => $aArgs['identifier'], 'file_path' => $filePath, 'type' => 'ArchiveTransfer']);
+            $messageExchangeReturn = self::saveMessageExchange(['dataObject' => $dataObject, 'res_id_master' => $aArgs['identifier'], 'file_path' => $filePath, 'type' => 'ArchiveTransfer']);
+            if (!empty($messageExchangeReturn['error'])) {
+                return ['errors' => $messageExchangeReturn['error']];
+            } else {
+                $messageId = $messageExchangeReturn['messageId'];
+            }
             self::saveUnitIdentifier(['attachment' => $aMergeAttachment, 'notes' => $aArgs['notes'], 'messageId' => $messageId]);
 
             \History\controllers\HistoryController::add([
diff --git a/modules/sendmail/sendmail_ajax_content.php b/modules/sendmail/sendmail_ajax_content.php
index d98163b8c7a..bb9d677ba72 100755
--- a/modules/sendmail/sendmail_ajax_content.php
+++ b/modules/sendmail/sendmail_ajax_content.php
@@ -190,7 +190,11 @@ switch ($mode) {
         if ($formContent == 'messageExchange') {
             $return = SendMessageExchangeController::createMessageExchange($_REQUEST);
             if (!empty($return['errors'])) {
-                $error = implode(", ", $return['errors']);
+                if (is_array($return['errors'])) {
+                    $error = implode(", ", $return['errors']);
+                } else {
+                    $error = $return['errors'];
+                }
                 $status = 1;
             }
             //Reload and show message
diff --git a/src/app/docserver/controllers/DocserverController.php b/src/app/docserver/controllers/DocserverController.php
index 894e4c75394..778d7e288d7 100755
--- a/src/app/docserver/controllers/DocserverController.php
+++ b/src/app/docserver/controllers/DocserverController.php
@@ -205,7 +205,7 @@ class DocserverController
 
         $docserver = DocserverModel::getCurrentDocserver(['collId' => $aArgs['collId'], 'typeId' => $aArgs['docserverTypeId']]);
         if (empty($docserver)) {
-            return ['errors' => '[storeRessourceOnDocserver] No available Docserver'];
+            return ['errors' => '[storeRessourceOnDocserver] No available Docserver with type ' . $aArgs['docserverTypeId']];
         }
 
         $pathOnDocserver = DocserverController::createPathOnDocServer(['path' => $docserver['path_template']]);
diff --git a/src/app/external/messageExchange/controllers/MessageExchangeReviewController.php b/src/app/external/messageExchange/controllers/MessageExchangeReviewController.php
index 6a6ecfd7097..0ba6bea477b 100755
--- a/src/app/external/messageExchange/controllers/MessageExchangeReviewController.php
+++ b/src/app/external/messageExchange/controllers/MessageExchangeReviewController.php
@@ -81,7 +81,7 @@ class MessageExchangeReviewController
 
             $reviewObject->MessageIdentifier->value = $messageExchangeData['reference_number'].'_NotificationSent';
             $reviewObject->TransferringAgency = $reviewObject->OriginatingAgency;
-            $messageId = SendMessageExchangeController::saveMessageExchange(['dataObject' => $reviewObject, 'res_id_master' => $aArgs['res_id_master'], 'type' => 'ArchiveModificationNotification', 'file_path' => $filePath, 'userId' => $aArgs['userId']]);
+            $messageExchangeSaved = SendMessageExchangeController::saveMessageExchange(['dataObject' => $reviewObject, 'res_id_master' => $aArgs['res_id_master'], 'type' => 'ArchiveModificationNotification', 'file_path' => $filePath, 'userId' => $aArgs['userId']]);
 
             $reviewObject->MessageIdentifier->value = $messageExchangeData['reference_number'].'_Notification';
 
@@ -96,7 +96,7 @@ class MessageExchangeReviewController
             $reviewObject->TransferringAgency->OrganizationDescriptiveMetadata = new \stdClass();
             $reviewObject->TransferringAgency->OrganizationDescriptiveMetadata->UserIdentifier = $aArgs['userId'];
 
-            SendMessageController::send($reviewObject, $messageId, 'ArchiveModificationNotification');
+            SendMessageController::send($reviewObject, $messageExchangeSaved['messageId'], 'ArchiveModificationNotification');
         }
     }
 }
diff --git a/src/app/external/messageExchange/models/MessageExchangeModelAbstract.php b/src/app/external/messageExchange/models/MessageExchangeModelAbstract.php
index 577190e2ed4..fcb7103ff56 100755
--- a/src/app/external/messageExchange/models/MessageExchangeModelAbstract.php
+++ b/src/app/external/messageExchange/models/MessageExchangeModelAbstract.php
@@ -142,7 +142,7 @@ abstract class MessageExchangeModelAbstract
             ]);
 
             if (!empty($storeResult['errors'])) {
-                var_dump($storeResult['errors']);
+                return ['error' => $storeResult['errors']];
             }
             $docserverId = $storeResult['docserver_id'];
             $filepath    = $storeResult['destination_dir'];
@@ -189,9 +189,9 @@ abstract class MessageExchangeModelAbstract
                 ]
                 ]);
         } catch (Exception $e) {
-            return false;
+            return ['error' => $e];
         }
 
-        return $messageObject->messageId;
+        return ['messageId' => $messageObject->messageId];
     }
 }
-- 
GitLab