From 453e7ebbd08eda9632f94981ee7c60c71e45eb56 Mon Sep 17 00:00:00 2001
From: Damien <damien.burel@maarch.org>
Date: Tue, 11 Jun 2019 17:24:06 +0200
Subject: [PATCH] FEAT #10769 TIME 1:30 Handle user when deleted

---
 sql/structure.sql                                   | 2 +-
 src/app/document/controllers/DocumentController.php | 5 ++---
 src/app/history/controllers/HistoryController.php   | 7 +++----
 src/app/history/models/HistoryModel.php             | 7 +++----
 4 files changed, 9 insertions(+), 12 deletions(-)

diff --git a/sql/structure.sql b/sql/structure.sql
index f8def1fef7..e0ea853526 100755
--- a/sql/structure.sql
+++ b/sql/structure.sql
@@ -125,7 +125,7 @@ CREATE TABLE history
   object_type CHARACTER VARYING(128) NOT NULL,
   object_id  CHARACTER VARYING(32) NOT NULL,
   type CHARACTER VARYING(64) NOT NULL,
-  user_id INTEGER NOT NULL,
+  "user" text NOT NULL,
   date TIMESTAMP without TIME ZONE NOT NULL,
   message text NOT NULL,
   data jsonb NOT NULL DEFAULT '{}',
diff --git a/src/app/document/controllers/DocumentController.php b/src/app/document/controllers/DocumentController.php
index 82ab0c896c..e665e77b9c 100755
--- a/src/app/document/controllers/DocumentController.php
+++ b/src/app/document/controllers/DocumentController.php
@@ -156,10 +156,9 @@ class DocumentController
                 $date = new \DateTime($document['process_date']);
                 $value['process_date'] = $date->format('d-m-Y H:i');
             }
-            $user = UserModel::getById(['select' => ['id', 'firstname', 'lastname'], 'id' => $value['user_id']]);
             $formattedDocument['workflow'][] = [
-                'userId'        => $user['id'],
-                'userDisplay'   => "{$user['firstname']} {$user['lastname']}",
+                'userId'        => $value['user_id'],
+                'userDisplay'   => UserModel::getLabelledUserById(['id' => $value['user_id']]),
                 'mode'          => $value['mode'],
                 'processDate'   => $value['process_date'],
                 'current'       => !$currentFound && empty($value['process_date'])
diff --git a/src/app/history/controllers/HistoryController.php b/src/app/history/controllers/HistoryController.php
index d88b181d2c..2eb0660db1 100755
--- a/src/app/history/controllers/HistoryController.php
+++ b/src/app/history/controllers/HistoryController.php
@@ -38,7 +38,7 @@ class HistoryController
             'object_type'   => $args['objectType'],
             'object_id'     => $args['objectId'],
             'type'          => $args['type'],
-            'user_id'       => $GLOBALS['id'],
+            'user'          => UserModel::getLabelledUserById(['id' => $GLOBALS['id']]),
             'message'       => $args['message'],
             'data'          => empty($args['data']) ? '{}' : json_encode($args['data']),
             'ip'            => empty($_SERVER['REMOTE_ADDR']) ? 'script' : $_SERVER['REMOTE_ADDR']
@@ -59,7 +59,7 @@ class HistoryController
         }
 
         $history = HistoryModel::get([
-            'select'    => ['code', 'type', 'user_id', 'date', 'message', 'data'],
+            'select'    => ['code', 'type', '"user"', 'date', 'message', 'data'],
             'where'     => ["(object_type = ? AND object_id = ?) OR (data->>'mainDocumentId' = ?)"],
             'data'      => ['main_documents', $args['id'], $args['id']],
             'orderBy'   => ['date']
@@ -76,13 +76,12 @@ class HistoryController
         }
 
         foreach ($history as $value) {
-            $user = UserModel::getById(['select' => ['login'], 'id' => $value['user_id']]);
             $date = new \DateTime($value['date']);
 
             $formattedHistory[] = [
                 'code'          => $value['code'],
                 'type'          => $value['type'],
-                'userLogin'     => $user['login'],
+                'user'          => $value['user'],
                 'date'          => $date->format('d-m-Y H:i'),
                 'message'       => preg_replace($langKeys, $langValues, $value['message']),
                 'data'          => json_decode($value['data'], true)
diff --git a/src/app/history/models/HistoryModel.php b/src/app/history/models/HistoryModel.php
index 949d2a0fcd..ba27183800 100755
--- a/src/app/history/models/HistoryModel.php
+++ b/src/app/history/models/HistoryModel.php
@@ -40,9 +40,8 @@ class HistoryModel
 
     public static function create(array $args)
     {
-        ValidatorModel::notEmpty($args, ['code', 'object_type', 'object_id', 'type', 'user_id', 'message', 'data', 'ip']);
-        ValidatorModel::stringType($args, ['code', 'objectType', 'type', 'message', 'data', 'ip']);
-        ValidatorModel::intVal($args, ['user_id']);
+        ValidatorModel::notEmpty($args, ['code', 'object_type', 'object_id', 'type', 'user', 'message', 'data', 'ip']);
+        ValidatorModel::stringType($args, ['code', 'object_type', 'type', 'user', 'message', 'data', 'ip']);
 
         DatabaseModel::insert([
             'table'         => 'history',
@@ -51,7 +50,7 @@ class HistoryModel
                 'object_type'   => $args['object_type'],
                 'object_id'     => $args['object_id'],
                 'type'          => $args['type'],
-                'user_id'       => $args['user_id'],
+                '"user"'        => $args['user'],
                 'date'          => 'CURRENT_TIMESTAMP',
                 'message'       => $args['message'],
                 'data'          => $args['data'],
-- 
GitLab