From 3f59598c304343fcdd19681f149701e67ed9f388 Mon Sep 17 00:00:00 2001
From: Damien <damien.burel@maarch.org>
Date: Fri, 10 Apr 2020 16:44:52 +0200
Subject: [PATCH] FEAT #13678 TIME 0:25 Fix message_exchange account_id

---
 migration/20.10/2010.sql                                  | 8 ++++++++
 sql/structure.sql                                         | 2 +-
 .../controllers/MessageExchangeController.php             | 7 +++----
 .../controllers/SendMessageExchangeController.php         | 3 ++-
 .../external/summary/controllers/SummaryController.php    | 2 +-
 5 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/migration/20.10/2010.sql b/migration/20.10/2010.sql
index 033dd0ba59d..e22ffbaab15 100755
--- a/migration/20.10/2010.sql
+++ b/migration/20.10/2010.sql
@@ -143,6 +143,14 @@ DO $$ BEGIN
         ALTER TABLE history RENAME COLUMN user_id_tmp TO user_id;
     END IF;
 END$$;
+DO $$ BEGIN
+    IF (SELECT count(column_name) from information_schema.columns where table_name = 'message_exchange' and column_name = 'account_id' and data_type != 'integer') THEN
+        ALTER TABLE message_exchange ADD COLUMN account_id_tmp INTEGER;
+        UPDATE message_exchange set account_id_tmp = (select id FROM users where users.user_id = message_exchange.account_id);
+        ALTER TABLE message_exchange DROP COLUMN IF EXISTS account_id;
+        ALTER TABLE message_exchange RENAME COLUMN account_id_tmp TO account_id;
+    END IF;
+END$$;
 
 
 /* RE CREATE VIEWS */
diff --git a/sql/structure.sql b/sql/structure.sql
index 27e5cd607b2..f9f5c6d78a1 100755
--- a/sql/structure.sql
+++ b/sql/structure.sql
@@ -1141,7 +1141,7 @@ CREATE TABLE message_exchange
   date timestamp NOT NULL,
   reference text NOT NULL,
   
-  account_id text,
+  account_id integer,
   sender_org_identifier text NOT NULL,
   sender_org_name text,
   recipient_org_identifier text NOT NULL,
diff --git a/src/app/external/messageExchange/controllers/MessageExchangeController.php b/src/app/external/messageExchange/controllers/MessageExchangeController.php
index a925863c073..9c043c0e86c 100644
--- a/src/app/external/messageExchange/controllers/MessageExchangeController.php
+++ b/src/app/external/messageExchange/controllers/MessageExchangeController.php
@@ -43,7 +43,7 @@ class MessageExchangeController
         foreach ($messagesModel as $message) {
             $messageType = 'm2m_' . strtoupper($message['type']);
 
-            $user = UserModel::getLabelledUserById(['login' => $message['account_id']]);
+            $user = UserModel::getLabelledUserById(['id' => $message['account_id']]);
             $sender = $user . ' (' . $message['sender_org_name'] . ')';
 
             $recipient = $message['recipient_org_name'] . ' (' . $message['recipient_org_identifier'] . ')';
@@ -159,7 +159,7 @@ class MessageExchangeController
         }
 
         $messageType = 'm2m_' . strtoupper($type);
-        $user = UserModel::getLabelledUserById(['login' => $message['account_id']]);
+        $user = UserModel::getLabelledUserById(['id' => $message['account_id']]);
         $sender = $user . ' (' . $message['sender_org_name'] . ')';
 
         if ($message['status'] == 'S') {
@@ -172,9 +172,8 @@ class MessageExchangeController
             $status = 'DRAFT';
         }
 
-        $userInfo = UserModel::getByLogin(['login' => $message['account_id'], 'select' => ['id']]);
         $messageExchange = [
-            'userId'                    => $userInfo['id'],
+            'userId'                    => $message['account_id'],
             'messageId'                 => $message['message_id'],
             'creationDate'              => $message['date'],
             'type'                      => $messageType,
diff --git a/src/app/external/messageExchange/controllers/SendMessageExchangeController.php b/src/app/external/messageExchange/controllers/SendMessageExchangeController.php
index a4dd49db3ca..872e4276f5e 100755
--- a/src/app/external/messageExchange/controllers/SendMessageExchangeController.php
+++ b/src/app/external/messageExchange/controllers/SendMessageExchangeController.php
@@ -95,11 +95,12 @@ class SendMessageExchangeController
             'filePath'          => $aArgs['file_path'],
         ];
 
+        $user = UserModel::getByLogin(['login' => $aArgs['userId'], 'select' => ['id']]);
         $messageId = MessageExchangeModel::insertMessage([
             "data"          => $oData,
             "type"          => $aArgs['type'],
             "dataExtension" => $aDataExtension,
-            "userId"        => $aArgs['userId']
+            "userId"        => $user['id']
         ]);
 
         return $messageId;
diff --git a/src/app/external/summary/controllers/SummaryController.php b/src/app/external/summary/controllers/SummaryController.php
index 9e6027704a9..64ad0cd2a55 100755
--- a/src/app/external/summary/controllers/SummaryController.php
+++ b/src/app/external/summary/controllers/SummaryController.php
@@ -76,7 +76,7 @@ class SummaryController
         ]);
         foreach ($maarch2ged as $key => $value) {
             if (!empty($value['account_id'])) {
-                $userInfo = UserModel::getByLogin(['select' => ['firstname', 'lastname'], 'login' => $value['account_id']]);
+                $userInfo = UserModel::getById(['select' => ['firstname', 'lastname'], 'id' => $value['account_id']]);
             }
             $maarch2ged[$key]['userInfo'] = $userInfo['firstname'] . ' ' . $userInfo['lastname'];
             $maarch2ged[$key]['object']   = '';
-- 
GitLab