From d163ce63c37776a297bf1ad711e1f3f5d38a0cac Mon Sep 17 00:00:00 2001
From: Guillaume Heurtier <guillaume.heurtier@maarch.org>
Date: Mon, 24 Feb 2020 18:22:12 +0100
Subject: [PATCH] FEAT #12091 TIME 1:00 download signed document as original
 content

---
 .../resource/controllers/ResController.php    | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/src/app/resource/controllers/ResController.php b/src/app/resource/controllers/ResController.php
index a8bde115868..0887da81a1d 100755
--- a/src/app/resource/controllers/ResController.php
+++ b/src/app/resource/controllers/ResController.php
@@ -546,13 +546,13 @@ class ResController extends ResourceControlController
         return $response->withJson(['encodedDocument' => base64_encode($fileContent)]);
     }
 
-    public function getOriginalFileContent(Request $request, Response $response, array $aArgs)
+    public function getOriginalFileContent(Request $request, Response $response, array $args)
     {
-        if (!Validator::intVal()->validate($aArgs['resId']) || !ResController::hasRightByResId(['resId' => [$aArgs['resId']], 'userId' => $GLOBALS['id']])) {
+        if (!Validator::intVal()->validate($args['resId']) || !ResController::hasRightByResId(['resId' => [$args['resId']], 'userId' => $GLOBALS['id']])) {
             return $response->withStatus(403)->withJson(['errors' => 'Document out of perimeter']);
         }
 
-        $document = ResModel::getById(['select' => ['docserver_id', 'path', 'filename', 'category_id'], 'resId' => $aArgs['resId']]);
+        $document = ResModel::getById(['select' => ['docserver_id', 'path', 'filename', 'category_id', 'version'], 'resId' => $args['resId']]);
         if (empty($document)) {
             return $response->withStatus(400)->withJson(['errors' => 'Document does not exist']);
         }
@@ -561,6 +561,15 @@ class ResController extends ResourceControlController
             return $response->withStatus(400)->withJson(['errors' => 'Document has no file']);
         }
 
+        $convertedDocument = AdrModel::getDocuments([
+            'select'    => ['docserver_id', 'path', 'filename', 'fingerprint'],
+            'where'     => ['res_id = ?', 'type in (?)', 'version = ?'],
+            'data'      => [$args['resId'], ['SIGN'], $document['version']],
+            'orderBy'   => ["type='SIGN' DESC"],
+            'limit'     => 1
+        ]);
+        $document = $convertedDocument[0] ?? $document;
+
         $docserver = DocserverModel::getByDocserverId(['docserverId' => $document['docserver_id'], 'select' => ['path_template', 'docserver_type_id']]);
         if (empty($docserver['path_template']) || !file_exists($docserver['path_template'])) {
             return $response->withStatus(400)->withJson(['errors' => 'Docserver does not exist']);
@@ -591,9 +600,9 @@ class ResController extends ResourceControlController
 
         HistoryController::add([
             'tableName' => 'res_letterbox',
-            'recordId'  => $aArgs['resId'],
+            'recordId'  => $args['resId'],
             'eventType' => 'VIEW',
-            'info'      => _DOC_DISPLAYING . " : {$aArgs['resId']}",
+            'info'      => _DOC_DISPLAYING . " : {$args['resId']}",
             'moduleId'  => 'res',
             'eventId'   => 'resview',
         ]);
-- 
GitLab