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