From b5f4b26cd02cee1120511dc40c40a32ee8cf9ea5 Mon Sep 17 00:00:00 2001
From: Damien <damien.burel@maarch.org>
Date: Fri, 15 Feb 2019 16:47:54 +0100
Subject: [PATCH] FEAT #9104 Export departments + fix user tests

---
 .../controllers/DepartmentController.php      | 137 ++++++++++++++++++
 .../resource/controllers/ExportController.php |   6 +
 .../app/list/export/export.component.ts       |  10 +-
 .../unitTests/app/user/UserControllerTest.php |  81 +----------
 4 files changed, 151 insertions(+), 83 deletions(-)
 create mode 100644 src/app/resource/controllers/DepartmentController.php

diff --git a/src/app/resource/controllers/DepartmentController.php b/src/app/resource/controllers/DepartmentController.php
new file mode 100644
index 00000000000..b1f67f1fa57
--- /dev/null
+++ b/src/app/resource/controllers/DepartmentController.php
@@ -0,0 +1,137 @@
+<?php
+
+/**
+* Copyright Maarch since 2008 under licence GPLv3.
+* See LICENCE.txt file at the root folder for more details.
+* This file is part of Maarch software.
+*
+*/
+
+/**
+* @brief Department Controller
+* @author dev@maarch.org
+*/
+
+namespace Resource\controllers;
+
+
+use SrcCore\models\ValidatorModel;
+
+class DepartmentController
+{
+    const FRENCH_DEPARTMENTS = [
+        "01"    => "Ain",
+        "02"    => "Aisne",
+        "03"    => "Allier",
+        "04"    => "Alpes de Haute Provence",
+        "05"    => "Hautes Alpes",
+        "06"    => "Alpes Maritimes",
+        "07"    => "Ardèche",
+        "08"    => "Ardennes",
+        "09"    => "Ariège",
+        "10"    => "Aube",
+        "11"    => "Aude",
+        "12"    => "Aveyron",
+        "13"    => "Bouches du Rhône",
+        "14"    => "Calvados",
+        "15"    => "Cantal",
+        "16"    => "Charente",
+        "17"    => "Charente Maritime",
+        "18"    => "Cher",
+        "19"    => "Corrèze",
+        "2A"    => "Corse du Sud",
+        "2B"    => "Haute Corse",
+        "21"    => "Côte d'Or",
+        "22"    => "Côtes d'Armor",
+        "23"    => "Creuse",
+        "24"    => "Dordogne",
+        "25"    => "Doubs",
+        "26"    => "Drôme",
+        "27"    => "Eure",
+        "28"    => "Eure et Loir",
+        "29"    => "Finistère",
+        "30"    => "Gard",
+        "31"    => "Haute Garonne",
+        "32"    => "Gers",
+        "33"    => "Gironde",
+        "34"    => "Hérault",
+        "35"    => "Ille et Vilaine",
+        "36"    => "Indre",
+        "37"    => "Indre et Loire",
+        "38"    => "Isère",
+        "39"    => "Jura",
+        "40"    => "Landes",
+        "41"    => "Loir et Cher",
+        "42"    => "Loire",
+        "43"    => "Haute Loire",
+        "44"    => "Loire Atlantique",
+        "45"    => "Loiret",
+        "46"    => "Lot",
+        "47"    => "Lot et Garonne",
+        "48"    => "Lozère",
+        "49"    => "Maine et Loire",
+        "50"    => "Manche",
+        "51"    => "Marne",
+        "52"    => "Haute Marne",
+        "53"    => "Mayenne",
+        "54"    => "Meurthe et Moselle",
+        "55"    => "Meuse",
+        "56"    => "Morbihan",
+        "57"    => "Moselle",
+        "58"    => "Nièvre",
+        "59"    => "Nord",
+        "60"    => "Oise",
+        "61"    => "Orne",
+        "62"    => "Pas de Calais",
+        "63"    => "Puy de Dôme",
+        "64"    => "Pyrénées Atlantiques",
+        "65"    => "Hautes Pyrénées",
+        "66"    => "Pyrénées Orientales",
+        "67"    => "Bas Rhin",
+        "68"    => "Haut Rhin",
+        "69"    => "Rhône",
+        "70"    => "Haute Saône",
+        "71"    => "Saône et Loire",
+        "72"    => "Sarthe",
+        "73"    => "Savoie",
+        "74"    => "Haute Savoie",
+        "75"    => "Paris",
+        "76"    => "Seine Maritime",
+        "77"    => "Seine et Marne",
+        "78"    => "Yvelines",
+        "79"    => "Deux Sèvres",
+        "80"    => "Somme",
+        "81"    => "Tarn",
+        "82"    => "Tarn et Garonne",
+        "83"    => "Var",
+        "84"    => "Vaucluse",
+        "85"    => "Vendée",
+        "86"    => "Vienne",
+        "87"    => "Haute Vienne",
+        "88"    => "Vosges",
+        "89"    => "Yonne",
+        "90"    => "Territoire de Belfort",
+        "91"    => "Essonne",
+        "92"    => "Hauts de Seine",
+        "93"    => "Seine St Denis",
+        "94"    => "Val de Marne",
+        "95"    => "Val d'Oise",
+        "971"   => "Guadeloupe",
+        "972"   => "Martinique",
+        "973"   => "Guyane",
+        "974"   => "La Réunion",
+        "976"   => "Mayotte"
+    ];
+
+    public static function getById(array $aArgs)
+    {
+        ValidatorModel::notEmpty($aArgs, ['id']);
+        ValidatorModel::intVal($aArgs, ['id']);
+
+        if (empty(self::FRENCH_DEPARTMENTS[$aArgs['id']])) {
+            return '';
+        }
+
+        return self::FRENCH_DEPARTMENTS[$aArgs['id']];
+    }
+}
diff --git a/src/app/resource/controllers/ExportController.php b/src/app/resource/controllers/ExportController.php
index cb79443789c..7ad6bb54e3c 100644
--- a/src/app/resource/controllers/ExportController.php
+++ b/src/app/resource/controllers/ExportController.php
@@ -167,6 +167,8 @@ class ExportController
                     $select[] = 'res_view_letterbox.typist';
                 } elseif ($value['value'] == 'getAssignee') {
                     $select[] = 'res_view_letterbox.dest_user';
+                } elseif ($value['value'] == 'getDepartment') {
+                    $select[] = 'res_view_letterbox.department_number_id';
                 }
             } else {
                 $select[] = "res_view_letterbox.{$value['value']}";
@@ -261,6 +263,8 @@ class ExportController
                         $csvContent[] = ExportController::getSignatories(['resId' => $resource['res_id']]);
                     } elseif ($value['value'] == 'getSignatureDates') {
                         $csvContent[] = ExportController::getSignatureDates(['resId' => $resource['res_id']]);
+                    } elseif ($value['value'] == 'getDepartment') {
+                        $content[] = DepartmentController::getById(['id' => $resource['department_number_id']]);
                     }
                 } else {
                     $allDates = ['doc_date', 'departure_date', 'admission_date', 'process_limit_date', 'opinion_limit_date', 'closing_date', 'sve_start_date'];
@@ -357,6 +361,8 @@ class ExportController
                         $content[] = ExportController::getSignatories(['resId' => $resource['res_id']]);
                     } elseif ($value['value'] == 'getSignatureDates') {
                         $content[] = ExportController::getSignatureDates(['resId' => $resource['res_id']]);
+                    } elseif ($value['value'] == 'getDepartment') {
+                        $content[] = DepartmentController::getById(['id' => $resource['department_number_id']]);
                     }
                 } else {
                     $allDates = ['doc_date', 'departure_date', 'admission_date', 'process_limit_date', 'opinion_limit_date', 'closing_date', 'sve_start_date'];
diff --git a/src/frontend/app/list/export/export.component.ts b/src/frontend/app/list/export/export.component.ts
index 64d4f656c6e..7bf46ba869a 100644
--- a/src/frontend/app/list/export/export.component.ts
+++ b/src/frontend/app/list/export/export.component.ts
@@ -71,11 +71,6 @@ export class ExportComponent implements OnInit {
             label: this.lang.departureDate,
             isFunction: false
         },
-        {
-            value: 'department_number_id',
-            label: this.lang.department,
-            isFunction: false
-        },
         {
             value: 'barcode',
             label: this.lang.barcode,
@@ -221,6 +216,11 @@ export class ExportComponent implements OnInit {
             label: this.lang.signatureDate,
             isFunction: true
         },
+        {
+            value: 'getDepartment',
+            label: this.lang.department,
+            isFunction: true
+        },
         {
             value: '',
             label: this.lang.comment,
diff --git a/test/unitTests/app/user/UserControllerTest.php b/test/unitTests/app/user/UserControllerTest.php
index dc102e310c7..28b9f1d3fe7 100755
--- a/test/unitTests/app/user/UserControllerTest.php
+++ b/test/unitTests/app/user/UserControllerTest.php
@@ -85,16 +85,13 @@ class UserControllerTest extends TestCase
             'lastname'  => 'TEST-KENT2',
             'mail'      => 'ck@dailyP.com',
             'phone'     => '0122334455',
-            'initials'  => 'CK',
-            'enabled'   => 'N',
+            'initials'  => 'CK'
         ];
         $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
 
         $response     = $userController->update($fullRequest, new \Slim\Http\Response(), ['id' => self::$id]);
         $responseBody = json_decode((string)$response->getBody());
 
-        $this->assertSame('success', $responseBody->success);
-
         //  READ
         $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
         $request        = \Slim\Http\Request::createFromEnvironment($environment);
@@ -106,7 +103,6 @@ class UserControllerTest extends TestCase
         $this->assertSame('TEST-CLARK2', $responseBody->firstname);
         $this->assertSame('TEST-KENT2', $responseBody->lastname);
         $this->assertSame('OK', $responseBody->status);
-        $this->assertSame('N', $responseBody->enabled);
         $this->assertSame('0122334455', $responseBody->phone);
         $this->assertSame('ck@dailyP.com', $responseBody->mail);
         $this->assertSame('CK', $responseBody->initials);
@@ -410,7 +406,7 @@ class UserControllerTest extends TestCase
         // READ in case of deactivated user_quota
         $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
         $request        = \Slim\Http\Request::createFromEnvironment($environment);
-        $response       = $userController->get($request, new \Slim\Http\Response(), ['id' => self::$id]);
+        $response       = $userController->get($request, new \Slim\Http\Response());
         $responseBody   = json_decode((string)$response->getBody());
 
         $this->assertNotNull($responseBody->users);
@@ -430,7 +426,7 @@ class UserControllerTest extends TestCase
         // READ in case of enabled user_quotat
         $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
         $request        = \Slim\Http\Request::createFromEnvironment($environment);
-        $response       = $userController->get($request, new \Slim\Http\Response(), ['id' => self::$id]);
+        $response       = $userController->get($request, new \Slim\Http\Response());
         $responseBody   = json_decode((string)$response->getBody());
 
         $this->assertNotNull($responseBody->users);
@@ -438,75 +434,7 @@ class UserControllerTest extends TestCase
         $this->assertSame(20, $responseBody->quota->userQuota);
         $this->assertNotNull($responseBody->quota->actives);
         $this->assertInternalType('int', $responseBody->quota->inactives);
-    }
-
-    public function testUserQuota()
-    {
-        $userController = new \User\controllers\UserController();
-        $parameterController = new \Parameter\controllers\ParameterController();
-
-        //  CREATE
-        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'POST']);
-        $request        = \Slim\Http\Request::createFromEnvironment($environment);
-
-        $aArgs = [
-            'userId'    => 'test-ckentquota',
-            'firstname' => 'TEST-CLARKquota',
-            'lastname'  => 'TEST-KENTquota'
-        ];
-        $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
-
-        $response     = $userController->create($fullRequest, new \Slim\Http\Response());
-        $responseBody = json_decode((string)$response->getBody());
-        $userId = $responseBody->user->id;
-
-        $this->assertInternalType('int', $userId);
-
-        //  UPDATE
-        $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'PUT']);
-        $request        = \Slim\Http\Request::createFromEnvironment($environment);
-        $aArgs = [
-            'user_id'    => 'test-ckentquota',
-            'firstname' => 'TEST-CLARKquota2',
-            'lastname'  => 'TEST-KENTquota2',
-            'mail'      => 'ck@dailyP.com',
-            'phone'     => '0122334455',
-            'initials'  => 'CK',
-            'enabled'   => 'N',
-        ];
-        $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
-
-        $response     = $userController->update($fullRequest, new \Slim\Http\Response(), ['id' =>$userId]);
-        $responseBody = json_decode((string)$response->getBody());
-
-        $this->assertSame('success', $responseBody->success);
-
-        //  UPDATE disabled user for user_quota (avoid notification sending)
-        $aArgs = [
-            'user_id'    => 'test-ckentquota',
-            'firstname' => 'TEST-CLARKquota2',
-            'lastname'  => 'TEST-KENTquota2',
-            'mail'      => 'ck@dailyP.com',
-            'phone'     => '0122334455',
-            'initials'  => 'CK',
-            'enabled'   => 'Y',
-        ];
-        $fullRequest = \httpRequestCustom::addContentInBody($aArgs, $request);
-
-        $response     = $userController->update($fullRequest, new \Slim\Http\Response(), ['id' =>$userId]);
-        $responseBody = json_decode((string)$response->getBody());
-
-        $this->assertSame('success', $responseBody->success);
 
-        //  DELETE
-        //  REAL DELETE
-        \SrcCore\models\DatabaseModel::delete([
-            'table' => 'users',
-            'where' => ['id = ?'],
-            'data'  => [$userId]
-        ]);
-
-        //  UPDATE
         $aArgs = [
             'description'           => 'User quota',
             'param_value_int'       => 0
@@ -627,8 +555,6 @@ class UserControllerTest extends TestCase
         $response       = $userController->delete($request, new \Slim\Http\Response(), ['id' => self::$id]);
         $responseBody   = json_decode((string)$response->getBody());
 
-        $this->assertSame('success', $responseBody->success);
-
         //  READ
         $environment    = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
         $request        = \Slim\Http\Request::createFromEnvironment($environment);
@@ -640,7 +566,6 @@ class UserControllerTest extends TestCase
         $this->assertSame('TEST-CLARK2', $responseBody->firstname);
         $this->assertSame('TEST-KENT2', $responseBody->lastname);
         $this->assertSame('DEL', $responseBody->status);
-        $this->assertSame('N', $responseBody->enabled);
         $this->assertSame('0122334455', $responseBody->phone);
         $this->assertSame('ck@dailyP.com', $responseBody->mail);
         $this->assertSame('CK', $responseBody->initials);
-- 
GitLab