From dc0b91d27cc8950ea2a31f7fdc1eef5cc6eb7dd0 Mon Sep 17 00:00:00 2001
From: Guillaume Heurtier <guillaume.heurtier@maarch.org>
Date: Tue, 11 Feb 2020 14:56:08 +0100
Subject: [PATCH] FEAT #12072 TIME 0:50 get merged email from template

---
 rest/index.php                                |  1 +
 .../controllers/TemplateController.php        | 29 +++++++++++++++++--
 2 files changed, 27 insertions(+), 3 deletions(-)

diff --git a/rest/index.php b/rest/index.php
index 315d49d43dd..cc47e919d56 100755
--- a/rest/index.php
+++ b/rest/index.php
@@ -456,6 +456,7 @@ $app->put('/templates/{id}', \Template\controllers\TemplateController::class . '
 $app->delete('/templates/{id}', \Template\controllers\TemplateController::class . ':delete');
 $app->post('/templates/{id}/duplicate', \Template\controllers\TemplateController::class . ':duplicate');
 $app->get('/administration/templates/new', \Template\controllers\TemplateController::class . ':initTemplates');
+$app->post('/templates/{id}/mergeEmail', \Template\controllers\TemplateController::class . ':mergeEmailTemplate');
 
 //Users
 $app->get('/users', \User\controllers\UserController::class . ':get');
diff --git a/src/app/template/controllers/TemplateController.php b/src/app/template/controllers/TemplateController.php
index fe81acea2c5..687f7c51918 100755
--- a/src/app/template/controllers/TemplateController.php
+++ b/src/app/template/controllers/TemplateController.php
@@ -14,6 +14,7 @@
 
 namespace Template\controllers;
 
+use ContentManagement\controllers\MergeController;
 use Docserver\controllers\DocserverController;
 use Docserver\models\DocserverModel;
 use Group\controllers\PrivilegeController;
@@ -456,9 +457,6 @@ class TemplateController
         $where = ['(templates_association.value_field in (?) OR templates_association.template_id IS NULL)', 'templates.template_type = ?', 'templates.template_target = ?'];
         $data = [$entities, 'HTML', 'sendmail'];
 
-        $queryParams = $request->getQueryParams();
-
-
         $templates = TemplateModel::getWithAssociation([
             'select'    => ['DISTINCT(templates.template_id)', 'templates.template_label'],
             'where'     => $where,
@@ -476,6 +474,31 @@ class TemplateController
         return $response->withJson(['templates' => $templates]);
     }
 
+    public static function mergeEmailTemplate(Request $request, Response $response, array $args)
+    {
+        $template = TemplateModel::getById(['id' => $args['id'], 'select' => ['template_content']]);
+        if (empty($template)) {
+            return $response->withStatus(400)->withJson(['errors' => 'Template does not exist']);
+        }
+        if (empty($template['template_content'])) {
+            return $response->withStatus(400)->withJson(['errors' => 'Template has no content']);
+        }
+
+        $body = $request->getParsedBody();
+
+        $dataToMerge = ['userId' => $GLOBALS['id']];
+        if (!empty($body['data']) && is_array($body['data'])) {
+            $dataToMerge = array_merge($dataToMerge, $body['data']);
+        }
+        $mergedDocument = MergeController::mergeDocument([
+            'content' => $template['template_content'],
+            'data'    => $dataToMerge
+        ]);
+        $fileContent = base64_decode($mergedDocument['encodedDocument']);
+
+        return $response->withJson(['mergedDocument' => $fileContent]);
+    }
+
     private static function checkData(array $aArgs)
     {
         ValidatorModel::notEmpty($aArgs, ['data']);
-- 
GitLab