From 67421bc209bbf87c2d9d21833a34a0bb439d5b05 Mon Sep 17 00:00:00 2001
From: Damien <damien.burel@maarch.org>
Date: Wed, 13 Jun 2018 10:50:06 +0200
Subject: [PATCH] FEAT #7737 Template entities

---
 core/Test/CoreControllerTest.php              |  2 +-
 rest/index.php                                |  4 +--
 .../controllers/JnlpController.php            |  1 -
 .../controllers/TemplateController.php        | 34 +++++++++++++------
 4 files changed, 27 insertions(+), 14 deletions(-)

diff --git a/core/Test/CoreControllerTest.php b/core/Test/CoreControllerTest.php
index c28b94a5ec0..8e879e4eef4 100644
--- a/core/Test/CoreControllerTest.php
+++ b/core/Test/CoreControllerTest.php
@@ -32,7 +32,7 @@ class CoreControllerTest extends TestCase
     public function testrenderJnlp()
     {
         // ERROR FILE NAME
-        $coreController = new \SrcCore\controllers\CoreController();
+        $coreController = new \ContentManagement\controllers\JnlpController();
 
         $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
         $request     = \Slim\Http\Request::createFromEnvironment($environment);
diff --git a/rest/index.php b/rest/index.php
index 435a0851ad5..321ecad5a6a 100755
--- a/rest/index.php
+++ b/rest/index.php
@@ -225,12 +225,12 @@ $app->get('/administration/statuses/new', \Status\controllers\StatusController::
 
 //Templates
 $app->get('/templates', \Template\controllers\TemplateController::class . ':get');
-$app->get('/initTemplate', \Template\controllers\TemplateController::class . ':initTemplate');
 $app->post('/templates', \Template\controllers\TemplateController::class . ':create');
-$app->get('/templates/{id}', \Template\controllers\TemplateController::class . ':getById');
+$app->get('/templates/{id}/details', \Template\controllers\TemplateController::class . ':getDetailledById');
 $app->put('/templates/{id}', \Template\controllers\TemplateController::class . ':update');
 $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');
 
 //Users
 $app->get('/users', \User\controllers\UserController::class . ':get');
diff --git a/src/app/contentManagement/controllers/JnlpController.php b/src/app/contentManagement/controllers/JnlpController.php
index bc8b951a95d..5b6941174b8 100644
--- a/src/app/contentManagement/controllers/JnlpController.php
+++ b/src/app/contentManagement/controllers/JnlpController.php
@@ -14,7 +14,6 @@
 
 namespace ContentManagement\controllers;
 
-
 use Docserver\models\DocserverModel;
 use Slim\Http\Request;
 use Slim\Http\Response;
diff --git a/src/app/template/controllers/TemplateController.php b/src/app/template/controllers/TemplateController.php
index 4e0d75f56af..91e62bcf69f 100644
--- a/src/app/template/controllers/TemplateController.php
+++ b/src/app/template/controllers/TemplateController.php
@@ -40,21 +40,30 @@ class TemplateController
         return $response->withJson(['templates' => $templates]);
     }
 
-    public function getById(Request $request, Response $response, array $aArgs)
+    public function getDetailledById(Request $request, Response $response, array $aArgs)
     {
         if (!ServiceModel::hasService(['id' => 'admin_templates', 'userId' => $GLOBALS['userId'], 'location' => 'templates', 'type' => 'admin'])) {
             return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']);
         }
 
         $template = TemplateModel::getById(['id' => $aArgs['id']]);
-        $template['entities'] = [];
 
-        $linkedEntities = TemplateAssociationModel::get(['select' => ['value_field'], 'where' => ['template_id = ?'], 'data' => [$template['template_id']]]);
-        foreach ($linkedEntities as $linkedEntity) {
-            $template['entities'][] = $linkedEntity['value_field'];
+        $rawLinkedEntities = TemplateAssociationModel::get(['select' => ['value_field'], 'where' => ['template_id = ?'], 'data' => [$template['template_id']]]);
+        $linkedEntities = [];
+        foreach ($rawLinkedEntities as $rawLinkedEntity) {
+            $linkedEntities[] = $rawLinkedEntity['value_field'];
         }
+        $entities = EntityModel::getAllowedEntitiesByUserId(['userId' => 'superadmin']);
+        foreach ($entities as $key => $entity) {
+            $entities[$key]['selected'] = false;
+            if (in_array($entity['id'], $linkedEntities)) {
+                $entities[$key]['selected'] = true;
+            }
+        }
+        $template['entities'] = $entities;
 
         $attachmentModelsTmp = AttachmentModel::getAttachmentsTypesByXML();
+        $attachmentTypes = [];
         foreach ($attachmentModelsTmp as $key => $value) {
             $attachmentTypes[] = [
                 'label' => $value['label'],
@@ -66,8 +75,7 @@ class TemplateController
             'template'        => $template,
             'templatesModels' => TemplateController::getModels(),
             'attachmentTypes' => $attachmentTypes,
-            'datasources'     => '',
-            'entities'        => EntityModel::getAllowedEntitiesByUserId(['userId' => 'superadmin'])
+            'datasources'     => ''
         ]);
     }
 
@@ -216,13 +224,14 @@ class TemplateController
         return $response->withJson(['id' => $templateId]);
     }
 
-    public function initTemplate(Request $request, Response $response)
+    public function initTemplates(Request $request, Response $response)
     {
         if (!ServiceModel::hasService(['id' => 'admin_templates', 'userId' => $GLOBALS['userId'], 'location' => 'templates', 'type' => 'admin'])) {
             return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']);
         }
 
         $attachmentModelsTmp = AttachmentModel::getAttachmentsTypesByXML();
+        $attachmentTypes = [];
         foreach ($attachmentModelsTmp as $key => $value) {
             $attachmentTypes[] = [
                 'label' => $value['label'],
@@ -230,15 +239,20 @@ class TemplateController
             ];
         }
 
+        $entities = EntityModel::getAllowedEntitiesByUserId(['userId' => 'superadmin']);
+        foreach ($entities as $key => $entity) {
+            $entities[$key]['selected'] = false;
+        }
+
         return $response->withJson([
             'templatesModels' => TemplateController::getModels(),
             'attachmentTypes' => $attachmentTypes,
             'datasources'     => '',
-            'entities'        => EntityModel::getAllowedEntitiesByUserId(['userId' => 'superadmin']),
+            'entities'        => $entities,
         ]);
     }
 
-    public function getModels()
+    public static function getModels()
     {
         $customId = CoreConfigModel::getCustomId();
 
-- 
GitLab