From 4e15147b671876a55fe86324a9bb88ee908821b9 Mon Sep 17 00:00:00 2001
From: "florian.azizian" <florian.azizian@maarch.org>
Date: Thu, 30 Jan 2020 18:33:23 +0100
Subject: [PATCH] FEAT #12346 TIME 0:15 route to get integrations

---
 rest/index.php                                |  1 +
 .../resource/controllers/ResController.php    | 57 ++++++++++++-------
 2 files changed, 36 insertions(+), 22 deletions(-)

diff --git a/rest/index.php b/rest/index.php
index eee8e31a298..a5a20e66c78 100755
--- a/rest/index.php
+++ b/rest/index.php
@@ -372,6 +372,7 @@ $app->get('/resources/{resId}/users/{userId}/isDestinationChanging', \Action\con
 $app->get('/resources/{resId}/users/{userId}/groups/{groupId}/baskets/{basketId}/processingData', \Resource\controllers\ResController::class . ':getProcessingData');
 $app->post('/resources/exportData', \Resource\controllers\ResourceDataExportController::class . ':generateFile');
 $app->put('/resources/{resId}/integrations', \Resource\controllers\ResController::class . ':setInIntegrations');
+$app->get('/resources/{resId}/integrations', \Resource\controllers\ResController::class . ':getInIntegrations');
 
 //ResourcesList
 $app->get('/resourcesList/users/{userId}/groups/{groupId}/baskets/{basketId}', \Resource\controllers\ResourceListController::class . ':get');
diff --git a/src/app/resource/controllers/ResController.php b/src/app/resource/controllers/ResController.php
index f892dd778fc..08055913610 100755
--- a/src/app/resource/controllers/ResController.php
+++ b/src/app/resource/controllers/ResController.php
@@ -118,7 +118,7 @@ class ResController
 
         $queryParams = $request->getQueryParams();
 
-        $select = ['model_id', 'category_id', 'priority', 'subject', 'alt_identifier', 'process_limit_date', 'closing_date', 'creation_date', 'modification_date'];
+        $select = ['model_id', 'category_id', 'priority', 'subject', 'alt_identifier', 'process_limit_date', 'closing_date', 'creation_date', 'modification_date', 'integrations'];
         if (empty($queryParams['light'])) {
             $select = array_merge($select, ['type_id', 'typist', 'status', 'destination', 'initiator', 'confidentiality', 'doc_date', 'admission_date', 'departure_date', 'barcode', 'custom_fields']);
         }
@@ -132,32 +132,33 @@ class ResController
         }
 
         $unchangeableData = [
-            'resId'                 => (int)$args['resId'],
-            'modelId'               => $document['model_id'],
-            'categoryId'            => $document['category_id'],
-            'chrono'                => $document['alt_identifier'],
-            'closingDate'           => $document['closing_date'],
-            'creationDate'          => $document['creation_date'],
-            'modificationDate'      => $document['modification_date']
+            'resId'             => (int)$args['resId'],
+            'modelId'           => $document['model_id'],
+            'categoryId'        => $document['category_id'],
+            'chrono'            => $document['alt_identifier'],
+            'closingDate'       => $document['closing_date'],
+            'creationDate'      => $document['creation_date'],
+            'modificationDate'  => $document['modification_date'],
+            'integrations'      => json_decode($document['integrations'], true)
         ];
         $formattedData = [
-            'subject'               => $document['subject'],
-            'processLimitDate'      => $document['process_limit_date'],
-            'priority'              => $document['priority']
+            'subject'           => $document['subject'],
+            'processLimitDate'  => $document['process_limit_date'],
+            'priority'          => $document['priority']
         ];
         if (empty($queryParams['light'])) {
             $formattedData = array_merge($formattedData, [
-                'doctype'               => $document['type_id'],
-                'typist'                => $document['typist'],
-                'typistLabel'           => UserModel::getLabelledUserById(['id' => $document['typist']]),
-                'status'                => $document['status'],
-                'destination'           => $document['destination'],
-                'initiator'             => $document['initiator'],
-                'confidentiality'       => $document['confidentiality'] == 'Y',
-                'documentDate'          => $document['doc_date'],
-                'arrivalDate'           => $document['admission_date'],
-                'departureDate'         => $document['departure_date'],
-                'barcode'               => $document['barcode']
+                'doctype'           => $document['type_id'],
+                'typist'            => $document['typist'],
+                'typistLabel'       => UserModel::getLabelledUserById(['id' => $document['typist']]),
+                'status'            => $document['status'],
+                'destination'       => $document['destination'],
+                'initiator'         => $document['initiator'],
+                'confidentiality'   => $document['confidentiality'] == 'Y',
+                'documentDate'      => $document['doc_date'],
+                'arrivalDate'       => $document['admission_date'],
+                'departureDate'     => $document['departure_date'],
+                'barcode'           => $document['barcode']
             ]);
         }
 
@@ -754,6 +755,18 @@ class ResController
         return $response->withStatus(204);
     }
 
+    public static function getInIntegrations(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']);
+        }
+
+        $resource = ResModel::getById(['resId' => $args['resId'], 'select' => ['integrations']]);
+        $integrations = json_decode($resource['integrations'], true);
+
+        return $response->withJson(['integrations' => $integrations]);
+    }
+
     public static function getEncodedDocument(array $aArgs)
     {
         ValidatorModel::notEmpty($aArgs, ['resId']);
-- 
GitLab