From a3b2d109b6e518b539fd4614d0488da8b8329624 Mon Sep 17 00:00:00 2001 From: Guillaume Heurtier <guillaume.heurtier@maarch.org> Date: Fri, 7 Feb 2020 17:23:32 +0100 Subject: [PATCH] FEAT #12072 TIME 1:30 get m2m list by res id --- rest/index.php | 1 + .../controllers/MessageExchangeController.php | 74 +++++++++++++++++++ src/frontend/lang/lang-fr.ts | 2 + 3 files changed, 77 insertions(+) create mode 100644 src/app/external/messageExchange/controllers/MessageExchangeController.php diff --git a/rest/index.php b/rest/index.php index 45e008f639e..c53f550be39 100755 --- a/rest/index.php +++ b/rest/index.php @@ -371,6 +371,7 @@ $app->put('/resources/{resId}/sign', \SignatureBook\controllers\SignatureBookCon $app->put('/resources/{resId}/unsign', \SignatureBook\controllers\SignatureBookController::class . ':unsignResource'); $app->get('/resources/{resId}/acknowledgementReceipts', \AcknowledgementReceipt\controllers\AcknowledgementReceiptController::class . ':getByResId'); $app->get('/resources/{resId}/shippings', \Shipping\controllers\ShippingController::class . ':getByResId'); +$app->get('/resources/{resId}/messageExchanges', \MessageExchange\controllers\MessageExchangeController::class . ':getByResId'); $app->put('/res/resource/status', \Resource\controllers\ResController::class . ':updateStatus'); $app->post('/res/list', \Resource\controllers\ResController::class . ':getList'); diff --git a/src/app/external/messageExchange/controllers/MessageExchangeController.php b/src/app/external/messageExchange/controllers/MessageExchangeController.php new file mode 100644 index 00000000000..e8660ec7580 --- /dev/null +++ b/src/app/external/messageExchange/controllers/MessageExchangeController.php @@ -0,0 +1,74 @@ +<?php + +/** + * Copyright Maarch since 2008 under licence GPLv3. + * See LICENCE.txt file at the root folder for more details. + * This file is part of Maarch software. + * + */ + +/** + * @brief Message Exchange Controller + * @author dev@maarch.org + */ + +namespace MessageExchange\controllers; + +use MessageExchange\models\MessageExchangeModel; +use Resource\controllers\ResController; +use Respect\Validation\Validator; +use Slim\Http\Request; +use Slim\Http\Response; +use User\models\UserModel; + +class MessageExchangeController +{ + public static function getByResId(Request $request, Response $response, array $args) + { + if (!Validator::intVal()->validate($args['resId']) || !ResController::hasRightByResId(['resId' => [$args['resId']], 'userId' => $GLOBALS['id']])) { + return $response->withStatus(403)->withJson(['errors' => 'Document out of perimeter']); + } + + $messagesModel = MessageExchangeModel::get([ + 'select' => [ + 'message_id', 'date', 'reference', 'type', 'sender_org_name', 'account_id', 'recipient_org_identifier', 'recipient_org_name', + 'reception_date', 'operation_date', 'data', 'res_id_master', 'filename', 'status' + ], + 'where' => ['res_id_master = ?', "(type = 'ArchiveTransfer' or reference like '%_ReplySent')"], + 'data' => [$args['resId']] + ]); + + $messages = []; + foreach ($messagesModel as $message) { + $messageType = 'm2m_' . strtoupper($message['type']); + + $user = UserModel::getLabelledUserById(['login' => $message['account_id']]); + $sender = $user . ' (' . $message['sender_org_name'] . ')'; + + $recipient = $message['recipient_org_name'] . ' (' . $message['recipient_org_identifier'] . ')'; + + if ($message['status'] == 'S') { + $status = 'sent'; + } elseif ($message['status'] == 'E') { + $status = 'error'; + } elseif ($message['status'] == 'W') { + $status = 'wait'; + } else { + $status = 'draft'; + } + + $messages[] = [ + 'messageId' => $message['message_id'], + 'creationDate' => $message['date'], + 'type' => $messageType, + 'sender' => $sender, + 'recipient' => $recipient, + 'receptionDate' => $message['reception_date'], + 'operationDate' => $message['operation_date'], + 'status' => $status + ]; + } + + return $response->withJson(['messageExchanges' => $messages]); + } +} diff --git a/src/frontend/lang/lang-fr.ts b/src/frontend/lang/lang-fr.ts index 6b616f67f3e..02ee216032d 100755 --- a/src/frontend/lang/lang-fr.ts +++ b/src/frontend/lang/lang-fr.ts @@ -1524,4 +1524,6 @@ export const LANG_FR = { "noMailContact" : "Aucun contact (externe) attaché pour ce courrier", "noSelectedAddress": "Aucune adresse associée", "documentUnsigned": "La signature du document a été retirée", + "m2m_ARCHIVETRANSFER" : "Pli numérique", + "m2m_ARCHIVETRANSFERREPLY" : "Réponse envoyée", }; -- GitLab