From e93cdd56fe6431416d33b2e7364a9f13ebb9845d Mon Sep 17 00:00:00 2001
From: Damien <damien.burel@maarch.org>
Date: Thu, 28 Jun 2018 11:27:59 +0200
Subject: [PATCH] [Refactoring] Get natures

---
 rest/index.php                                |  1 +
 .../action/controllers/ActionController.php   |  5 +-
 .../resource/controllers/ResController.php    |  7 ++-
 src/app/resource/models/ResModelAbstract.php  | 50 +++++++++++++++++++
 src/core/models/CoreConfigModel.php           | 29 -----------
 5 files changed, 60 insertions(+), 32 deletions(-)

diff --git a/rest/index.php b/rest/index.php
index 0584f1b4268..cb0b243c560 100755
--- a/rest/index.php
+++ b/rest/index.php
@@ -212,6 +212,7 @@ $app->get('/res/{resId}/lock', \Resource\controllers\ResController::class . ':is
 $app->get('/res/{resId}/notes/count', \Resource\controllers\ResController::class . ':getNotesCountForCurrentUserById');
 $app->put('/res/externalInfos', \Resource\controllers\ResController::class . ':updateExternalInfos');
 $app->get('/categories', \Resource\controllers\ResController::class . ':getCategories');
+$app->get('/natures', \Resource\controllers\ResController::class . ':getNatures');
 
 //SignatureBook
 $app->get('/{basketId}/signatureBook/resList', \SignatureBook\controllers\SignatureBookController::class . ':getResList');
diff --git a/src/app/action/controllers/ActionController.php b/src/app/action/controllers/ActionController.php
index 82af0b13149..b46818d432f 100644
--- a/src/app/action/controllers/ActionController.php
+++ b/src/app/action/controllers/ActionController.php
@@ -13,6 +13,7 @@
 namespace Action\controllers;
 
 use History\controllers\HistoryController;
+use Resource\models\ResModel;
 use Respect\Validation\Validator;
 use Action\models\ActionModel;
 use SrcCore\models\CoreConfigModel;
@@ -52,7 +53,7 @@ class ActionController
             }
             $obj['action']['actionCategories'] = $actionCategories;
 
-            $obj['categoriesList'] = CoreConfigModel::getLettersBoxCategories();
+            $obj['categoriesList'] = ResModel::getCategories();
             if (empty($obj['action']['actionCategories'])) {
                 $categoriesList = [];
                 foreach ($obj['categoriesList'] as $key => $category) {
@@ -203,7 +204,7 @@ class ActionController
         $obj['action']['is_folder_action'] = false;
         $obj['action']['action_page']      = '';
         $obj['action']['id_status']        = '_NOSTATUS_';
-        $obj['categoriesList']             = CoreConfigModel::getLettersBoxCategories();
+        $obj['categoriesList']             = ResModel::getCategories();
 
         foreach ($obj['categoriesList'] as $key => $value) {
             $obj['categoriesList'][$key]['selected'] = true;
diff --git a/src/app/resource/controllers/ResController.php b/src/app/resource/controllers/ResController.php
index 2942cb2831f..25aa66e0da9 100755
--- a/src/app/resource/controllers/ResController.php
+++ b/src/app/resource/controllers/ResController.php
@@ -379,6 +379,11 @@ class ResController
 
     public function getCategories(Request $request, Response $response)
     {
-        return $response->withJson(['categories' => CoreConfigModel::getLettersBoxCategories()]);
+        return $response->withJson(['categories' => ResModel::getCategories()]);
+    }
+
+    public function getNatures(Request $request, Response $response)
+    {
+        return $response->withJson(['natures' => ResModel::getNatures()]);
     }
 }
diff --git a/src/app/resource/models/ResModelAbstract.php b/src/app/resource/models/ResModelAbstract.php
index b4c1d1d578f..15268416915 100644
--- a/src/app/resource/models/ResModelAbstract.php
+++ b/src/app/resource/models/ResModelAbstract.php
@@ -307,4 +307,54 @@ abstract class ResModelAbstract
 
         return $date->format('Y-m-d H:i:s');
     }
+
+    public static function getCategories()
+    {
+        $loadedXml = CoreConfigModel::getXmlLoaded(['path' => 'apps/maarch_entreprise/xml/config.xml']);
+
+        $categories = [];
+
+        if ($loadedXml) {
+            foreach ($loadedXml->COLLECTION as $collection) {
+                $collection = (array)$collection;
+
+                if ($collection['id'] == 'letterbox_coll') {
+                    foreach ($collection['categories']->category as $category) {
+                        $category = (array)$category;
+
+                        $categories[] = [
+                            'id'                => $category['id'],
+                            'label'             => defined($category['label']) ? constant($category['label']) : $category['label'],
+                            'defaultCategory'   => $category['id'] == $collection['categories']->default_category
+                        ];
+                    }
+                }
+            }
+        }
+
+        return $categories;
+    }
+
+    public static function getNatures()
+    {
+        $loadedXml = CoreConfigModel::getXmlLoaded(['path' => 'apps/maarch_entreprise/xml/entreprise.xml']);
+
+        $natures = [];
+
+        if ($loadedXml) {
+            foreach ($loadedXml->mail_natures->nature as $nature) {
+                $withReference = (string)$nature['with_reference'] == 'true' ? true : false;
+                $nature = (array)$nature;
+
+                $natures[] = [
+                    'id'            => $nature['id'],
+                    'label'         => defined($nature['label']) ? constant($nature['label']) : $nature['label'],
+                    'withReference' => $withReference,
+                    'defaultNature' => $nature['id'] == $loadedXml->mail_natures->default_nature
+                ];
+            }
+        }
+
+        return $natures;
+    }
 }
diff --git a/src/core/models/CoreConfigModel.php b/src/core/models/CoreConfigModel.php
index 47ff3f89575..8bff0fd2fe2 100644
--- a/src/core/models/CoreConfigModel.php
+++ b/src/core/models/CoreConfigModel.php
@@ -149,35 +149,6 @@ class CoreConfigModel
         return $ozwilloConfig;
     }
 
-    public static function getLettersBoxCategories()
-    {
-        $loadedXml = CoreConfigModel::getXmlLoaded(['path' => 'apps/maarch_entreprise/xml/config.xml']);
-
-        $categories = [];
-
-        foreach ($loadedXml->COLLECTION as $collection) {
-            if ($collection->id == 'letterbox_coll') {
-                foreach ($collection->categories->category as $category) {
-                    if ($category->id == (string)$collection->categories->default_category) {
-                        $categories[] = [
-                            'id'                => (string)$category->id,
-                            'label'             => defined($category->label) ? constant($category->label) : $category->label,
-                            'defaultCategory'   => true
-                        ];
-                    } else {
-                        $categories[] = [
-                            'id'                => (string)$category->id,
-                            'label'             => defined($category->label) ? constant($category->label) : $category->label,
-                            'defaultCategory'   => false
-                        ];
-                    }
-                }
-            }
-        }
-
-        return $categories;
-    }
-
     public static function getXmlLoaded(array $aArgs)
     {
         ValidatorModel::notEmpty($aArgs, ['path']);
-- 
GitLab