From ee94581d88490dddb037292e5392bb7e62aae789 Mon Sep 17 00:00:00 2001
From: "florian.azizian" <florian.azizian@maarch.org>
Date: Fri, 18 Sep 2020 15:29:22 +0200
Subject: [PATCH] FEAT #14537 TIME 3:30 remove link between range and issuing
 site

---
 migration/20.10/2010.sql                      |  1 -
 rest/index.php                                |  1 -
 sql/data_fr.sql                               |  6 +-
 sql/structure.sql                             |  1 -
 .../controllers/IssuingSiteController.php     | 67 ++++------------
 .../controllers/RegisteredMailController.php  | 12 +--
 .../controllers/RegisteredMailTrait.php       |  8 +-
 .../RegisteredNumberRangeController.php       | 59 +++-----------
 .../models/RegisteredNumberRangeModel.php     | 11 ++-
 .../indexing/issuing-site-input.component.ts  | 16 ++--
 .../issuing-site/issuing-site.component.html  |  2 +-
 .../registered-mail-list.component.html       |  7 --
 .../registered-mail-list.component.ts         |  4 +-
 .../registered-mail.component.html            |  9 ---
 .../registered-mail.component.ts              | 22 ------
 .../indexing-form/indexing-form.component.ts  | 10 +--
 src/lang/lang-en.json                         |  3 +-
 src/lang/lang-fr.json                         |  3 +-
 src/lang/lang-nl.json                         |  3 +-
 .../IssuingSiteControllerTest.php             | 78 -------------------
 .../RegisteredNumberRangeControllerTest.php   |  3 -
 21 files changed, 60 insertions(+), 266 deletions(-)

diff --git a/migration/20.10/2010.sql b/migration/20.10/2010.sql
index 72f05d45611..1d50afa7f52 100755
--- a/migration/20.10/2010.sql
+++ b/migration/20.10/2010.sql
@@ -222,7 +222,6 @@ CREATE TABLE IF NOT EXISTS registered_mail_number_range (
     range_end INTEGER NOT NULL,
     creator INTEGER NOT NULL,
     creation_date timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
-    site_id INTEGER NOT NULL,
     status CHARACTER VARYING(10) NOT NULL,
     current_number INTEGER,
     CONSTRAINT registered_mail_number_range_pkey PRIMARY KEY (id),
diff --git a/rest/index.php b/rest/index.php
index 518e9314181..c4b176aa8af 100755
--- a/rest/index.php
+++ b/rest/index.php
@@ -629,7 +629,6 @@ $app->post('/registeredMail/ranges', \RegisteredMail\controllers\RegisteredNumbe
 $app->put('/registeredMail/ranges/{id}', \RegisteredMail\controllers\RegisteredNumberRangeController::class . ':update');
 $app->delete('/registeredMail/ranges/{id}', \RegisteredMail\controllers\RegisteredNumberRangeController::class . ':delete');
 $app->get('/registeredMail/ranges/type/{type}/last', \RegisteredMail\controllers\RegisteredNumberRangeController::class . ':getLastNumberByType');
-$app->get('/registeredMail/sites/type/{type}', \RegisteredMail\controllers\IssuingSiteController::class . ':getByType');
 
 $app->get('/registeredMail/countries', \RegisteredMail\controllers\RegisteredMailController::class . ':getCountries');
 
diff --git a/sql/data_fr.sql b/sql/data_fr.sql
index 7e578c6b3eb..8a640f5f226 100755
--- a/sql/data_fr.sql
+++ b/sql/data_fr.sql
@@ -1760,6 +1760,6 @@ SELECT setval('registered_mail_issuing_sites_id_seq', (select max(id)+1 from reg
 INSERT INTO registered_mail_issuing_sites_entities (site_id, entity_id) VALUES (1, 6);
 INSERT INTO registered_mail_issuing_sites_entities (site_id, entity_id) VALUES (1, 13);
 
-INSERT INTO registered_mail_number_range (type, tracking_account_number, range_start, range_end, creator, creation_date, site_id, status) VALUES ('2C', 'SuiviNumber', 1, 10, 23, '2020-09-14 14:38:09.008644', 1, 'OK');
-INSERT INTO registered_mail_number_range (type, tracking_account_number, range_start, range_end, creator, creation_date, site_id, status) VALUES ('RW', 'SuiviNumberInternational', 1, 10, 23, '2020-09-14 14:39:32.972626', 1, 'OK');
-INSERT INTO registered_mail_number_range (type, tracking_account_number, range_start, range_end, creator, creation_date, site_id, status) VALUES ('2D', 'suiviNumber', 1, 10, 23, '2020-09-14 14:39:16.779322', 1, 'OK');
+INSERT INTO registered_mail_number_range (type, tracking_account_number, range_start, range_end, creator, creation_date, status) VALUES ('2C', 'SuiviNumber', 1, 10, 23, '2020-09-14 14:38:09.008644', 'OK');
+INSERT INTO registered_mail_number_range (type, tracking_account_number, range_start, range_end, creator, creation_date, status) VALUES ('RW', 'SuiviNumberInternational', 1, 10, 23, '2020-09-14 14:39:32.972626', 'OK');
+INSERT INTO registered_mail_number_range (type, tracking_account_number, range_start, range_end, creator, creation_date, status) VALUES ('2D', 'suiviNumber', 1, 10, 23, '2020-09-14 14:39:16.779322', 'OK');
diff --git a/sql/structure.sql b/sql/structure.sql
index 8ccc6a0bc97..e8af8e0d406 100755
--- a/sql/structure.sql
+++ b/sql/structure.sql
@@ -1438,7 +1438,6 @@ CREATE TABLE IF NOT EXISTS registered_mail_number_range (
     range_end INTEGER NOT NULL,
     creator INTEGER NOT NULL,
     creation_date timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
-    site_id INTEGER NOT NULL,
     status CHARACTER VARYING(10) NOT NULL,
     current_number INTEGER,
     CONSTRAINT registered_mail_number_range_pkey PRIMARY KEY (id),
diff --git a/src/app/registeredMail/controllers/IssuingSiteController.php b/src/app/registeredMail/controllers/IssuingSiteController.php
index 99808dd66e7..0e5d3bc614d 100644
--- a/src/app/registeredMail/controllers/IssuingSiteController.php
+++ b/src/app/registeredMail/controllers/IssuingSiteController.php
@@ -17,7 +17,7 @@ use Group\controllers\PrivilegeController;
 use History\controllers\HistoryController;
 use RegisteredMail\models\IssuingSiteEntitiesModel;
 use RegisteredMail\models\IssuingSiteModel;
-use RegisteredMail\models\RegisteredNumberRangeModel;
+use RegisteredMail\models\RegisteredMailModel;
 use Respect\Validation\Validator;
 use Slim\Http\Request;
 use Slim\Http\Response;
@@ -29,7 +29,6 @@ class IssuingSiteController
         $sites = IssuingSiteModel::get();
 
         foreach ($sites as $key => $site) {
-            $ranges = RegisteredNumberRangeModel::get(['where' => ['site_id = ?'], 'data' => [$site['id']]]);
             $sites[$key] = [
                 'id'                 => $site['id'],
                 'label'              => $site['label'],
@@ -41,9 +40,17 @@ class IssuingSiteController
                 'addressAdditional2' => $site['address_additional2'],
                 'addressPostcode'    => $site['address_postcode'],
                 'addressTown'        => $site['address_town'],
-                'addressCountry'     => $site['address_country'],
-                'countRanges'        => count($ranges)
+                'addressCountry'     => $site['address_country']
             ];
+
+            $entities = IssuingSiteEntitiesModel::get([
+                'select' => ['entity_id'],
+                'where'  => ['site_id = ?'],
+                'data'   => [$site['id']]
+            ]);
+    
+            $entities = array_column($entities, 'entity_id');
+            $sites[$key]['entities'] = $entities;
         }
 
         return $response->withJson(['sites' => $sites]);
@@ -265,12 +272,13 @@ class IssuingSiteController
             return $response->withStatus(204);
         }
 
-        $ranges = RegisteredNumberRangeModel::get([
-            'where' => ['site_id = ?', 'status = ?'],
-            'data'  => [$args['id'], 'OK']
+        $issuingSite = RegisteredMailModel::get([
+            'select'    => [1],
+            'where'     => ['issuing_site = ?'],
+            'data'      => [$args['id']]
         ]);
-        if (!empty($ranges)) {
-            return $response->withStatus(400)->withJson(['errors' => 'Cannot delete site : site is used by an active range', 'lang' => 'siteIsUsedByActiveRange']);
+        if (!empty($issuingSite)) {
+            return $response->withStatus(400)->withJson(['errors' => 'Cannot delete site : site is already used by a registered mail', 'lang' => 'siteIsUsedByRegisteredMail']);
         }
 
         IssuingSiteEntitiesModel::delete([
@@ -294,45 +302,4 @@ class IssuingSiteController
 
         return $response->withStatus(204);
     }
-
-    public function getByType(Request $request, Response $response, array $args)
-    {
-        if (!PrivilegeController::hasPrivilege(['privilegeId' => 'admin_registered_mail', 'userId' => $GLOBALS['id']])) {
-            return $response->withStatus(403)->withJson(['errors' => 'Service forbidden']);
-        }
-
-        $sitesIds = RegisteredNumberRangeModel::get([
-            'select' => ['site_id'],
-            'where'  => ['type = ?', 'status = ?'],
-            'data'   => [$args['type'], 'OK']
-        ]);
-
-        if (empty($sitesIds)) {
-            return $response->withStatus(200)->withJson(['sites' => []]);
-        }
-        $sitesIds = array_column($sitesIds, 'site_id');
-
-        $sites = IssuingSiteModel::get([
-            'where' => ['id in (?)'],
-            'data'  => [$sitesIds]
-        ]);
-
-        foreach ($sites as $key => $site) {
-            $sites[$key] = [
-                'id'                 => $site['id'],
-                'label'              => $site['label'],
-                'postOfficeLabel'    => $site['post_office_label'],
-                'accountNumber'      => $site['account_number'],
-                'addressNumber'      => $site['address_number'],
-                'addressStreet'      => $site['address_street'],
-                'addressAdditional1' => $site['address_additional1'],
-                'addressAdditional2' => $site['address_additional2'],
-                'addressPostcode'    => $site['address_postcode'],
-                'addressTown'        => $site['address_town'],
-                'addressCountry'     => $site['address_country']
-            ];
-        }
-
-        return $response->withJson(['sites' => $sites]);
-    }
 }
diff --git a/src/app/registeredMail/controllers/RegisteredMailController.php b/src/app/registeredMail/controllers/RegisteredMailController.php
index fcbbe5ef1c5..983def5fd62 100644
--- a/src/app/registeredMail/controllers/RegisteredMailController.php
+++ b/src/app/registeredMail/controllers/RegisteredMailController.php
@@ -92,8 +92,8 @@ class RegisteredMailController
         if ($registeredMail['type'] != $body['type']) {
             $range = RegisteredNumberRangeModel::get([
                 'select' => ['id', 'range_end', 'current_number'],
-                'where'  => ['type = ?', 'site_id = ?', 'status = ?'],
-                'data'   => [$body['type'], $registeredMail['issuing_site'], 'OK']
+                'where'  => ['type = ?', 'status = ?'],
+                'data'   => [$body['type'], 'OK']
             ]);
             if (empty($range)) {
                 return $response->withStatus(400)->withJson(['errors' => 'No range found']);
@@ -329,7 +329,7 @@ class RegisteredMailController
         }
         if ($args['type'] != 'RW') {
 
-            // TODO INFO FEUILLE 1 : GAUCHE
+            // FEUILLE 1 : GAUCHE
             $pdf->SetXY(50, 15);
             $pdf->cell(0, 0, $registeredMailNumber);
 
@@ -372,7 +372,7 @@ class RegisteredMailController
             $pdf->cell(0, 0, $args['recipient'][6]);
 
 
-            // TODO INFO FEUILLE 1 : DROITE
+            // FEUILLE 1 : DROITE
             $y = 40;
             $pdf->SetXY(130, $y);
             $pdf->cell(0, 0, $args['recipient'][1]);
@@ -403,7 +403,7 @@ class RegisteredMailController
             $pdf->Image('@'.$barcodeObj->getPngData(), 140, 75, 60, 12, '', '', '', false, 300);
 
 
-            //TODO INFO 2eme feuille
+            // 2eme feuille
             $pdf->SetXY(63, 100);
             $pdf->cell(0, 0, $registeredMailNumber);
             $barcodeObj = $barcode->getBarcodeObj('C128', $registeredMailNumber, -4, -100);
@@ -474,7 +474,7 @@ class RegisteredMailController
             $pdf->cell(0, 0, $args['sender'][6]);
 
 
-            //TODO INFO 3eme feuille
+            // 3eme feuille
             if ($args['type'] == '2C') {
                 $pdf->SetXY(37, 205);
                 $pdf->cell(0, 0, $registeredMailNumber);
diff --git a/src/app/registeredMail/controllers/RegisteredMailTrait.php b/src/app/registeredMail/controllers/RegisteredMailTrait.php
index 5a1aed38eb9..c942b22dba0 100644
--- a/src/app/registeredMail/controllers/RegisteredMailTrait.php
+++ b/src/app/registeredMail/controllers/RegisteredMailTrait.php
@@ -56,8 +56,8 @@ trait RegisteredMailTrait
 
         $range = RegisteredNumberRangeModel::get([
             'select'    => ['id', 'range_end', 'current_number'],
-            'where'     => ['type = ?', 'site_id = ?', 'status = ?'],
-            'data'      => [$args['data']['type'], $args['data']['issuingSiteId'], 'OK']
+            'where'     => ['type = ?', 'status = ?'],
+            'data'      => [$args['data']['type'], 'OK']
         ]);
         if (empty($range)) {
             return ['errors' => ['No range found']];
@@ -265,8 +265,8 @@ trait RegisteredMailTrait
         $site = IssuingSiteModel::getById(['id' => $registeredMail['issuing_site']]);
 
         $range = RegisteredNumberRangeModel::get([
-            'where' => ['site_id = ?', 'type = ?', 'range_start <= ?', 'range_end >= ?'],
-            'data'  => [$registeredMail['issuing_site'], $registeredMail['type'], $registeredMail['number'], $registeredMail['number']]
+            'where' => ['type = ?', 'range_start <= ?', 'range_end >= ?'],
+            'data'  => [$registeredMail['type'], $registeredMail['number'], $registeredMail['number']]
         ]);
         if (empty($range[0])) {
             return ['errors' => ['No range found']];
diff --git a/src/app/registeredMail/controllers/RegisteredNumberRangeController.php b/src/app/registeredMail/controllers/RegisteredNumberRangeController.php
index 369f1407b2c..a3e1c52a4da 100644
--- a/src/app/registeredMail/controllers/RegisteredNumberRangeController.php
+++ b/src/app/registeredMail/controllers/RegisteredNumberRangeController.php
@@ -15,8 +15,6 @@ namespace RegisteredMail\controllers;
 
 use Group\controllers\PrivilegeController;
 use History\controllers\HistoryController;
-use RegisteredMail\models\IssuingSiteEntitiesModel;
-use RegisteredMail\models\IssuingSiteModel;
 use RegisteredMail\models\RegisteredNumberRangeModel;
 use Respect\Validation\Validator;
 use Slim\Http\Request;
@@ -35,7 +33,6 @@ class RegisteredNumberRangeController
             $fullness = $fullness < 0 ? 0 : $fullness;
             $fullness = round($fullness, 2);
 
-            $site = IssuingSiteModel::getById(['id' => $range['site_id']]);
             $ranges[$key] = [
                 'id'                    => $range['id'],
                 'registeredMailType'    => $range['type'],
@@ -45,22 +42,9 @@ class RegisteredNumberRangeController
                 'creator'               => $range['creator'],
                 'creationDate'          => $range['creation_date'],
                 'status'                => $range['status'],
-                'customerAccountNumber' => $site['account_number'],
                 'currentNumber'         => $range['current_number'],
                 'fullness'              => $fullness,
-                'siteId'                => $range['site_id'],
-                'label'                 => $site['label']
             ];
-
-            $entities = IssuingSiteEntitiesModel::get([
-                'select' => ['entity_id'],
-                'where'  => ['site_id = ?'],
-                'data'   => [$site['id']]
-            ]);
-
-            $entities = array_column($entities, 'entity_id');
-    
-            $ranges[$key]['entities'] = $entities;
         }
 
         return $response->withJson(['ranges' => $ranges]);
@@ -78,8 +62,6 @@ class RegisteredNumberRangeController
             return $response->withStatus(400)->withJson(['errors' => 'Range not found']);
         }
 
-        $site = IssuingSiteModel::getById(['id' => $range['site_id']]);
-
         $fullness = $range['current_number'] - $range['range_start'];
         $rangeSize = $range['range_end'] - $range['range_start'];
         $fullness = ($fullness / $rangeSize) * 100;
@@ -95,11 +77,8 @@ class RegisteredNumberRangeController
             'creator'               => $range['creator'],
             'creationDate'          => $range['creation_date'],
             'status'                => $range['status'],
-            'customerAccountNumber' => $site['account_number'],
             'currentNumber'         => $range['current_number'],
-            'fullness'              => $fullness,
-            'siteId'                => $range['site_id'],
-            'label'                 => $site['label']
+            'fullness'              => $fullness
         ];
 
         return $response->withJson(['range' => $range]);
@@ -125,18 +104,10 @@ class RegisteredNumberRangeController
         if (!Validator::intVal()->notEmpty()->validate($body['rangeEnd'])) {
             return $response->withStatus(400)->withJson(['errors' => 'Body rangeEnd is empty or not an integer']);
         }
-        if (!Validator::intVal()->notEmpty()->validate($body['siteId'])) {
-            return $response->withStatus(400)->withJson(['errors' => 'Body siteId is empty or not an integer']);
-        }
         if ($body['rangeStart'] >= $body['rangeEnd']) {
             return $response->withStatus(400)->withJson(['errors' => 'Body rangeStart cannot be larger or equal than rangeEnd', 'lang' => 'rangeStartLargerThanRangeEnd']);
         }
 
-        $site = IssuingSiteModel::getById(['id' => $body['siteId']]);
-        if (empty($site)) {
-            return $response->withStatus(400)->withJson(['errors' => 'Body siteId does not exist']);
-        }
-
         $ranges = RegisteredNumberRangeModel::get([
             'select' => [1],
             'where'  => ['tracking_account_number = ?'],
@@ -148,8 +119,8 @@ class RegisteredNumberRangeController
 
         $ranges = RegisteredNumberRangeModel::get([
             'select'  => ['range_start', 'range_end'],
-            'where'   => ['type = ?', 'site_id = ?', 'status = ?'],
-            'data'    => [$body['registeredMailType'], $body['siteId'], 'OK'],
+            'where'   => ['type = ?', 'status = ?'],
+            'data'    => [$body['registeredMailType'], 'OK'],
             'orderBy' => ['range_end desc']
         ]);
 
@@ -166,7 +137,6 @@ class RegisteredNumberRangeController
             'rangeStart'            => $body['rangeStart'],
             'rangeEnd'              => $body['rangeEnd'],
             'creator'               => $GLOBALS['id'],
-            'siteId'                => $body['siteId'],
             'status'                => empty($body['status']) ? 'SPD' : $body['status'],
             'currentNumber'         => null
         ]);
@@ -208,18 +178,10 @@ class RegisteredNumberRangeController
         if (!Validator::intVal()->notEmpty()->validate($body['rangeEnd'])) {
             return $response->withStatus(400)->withJson(['errors' => 'Body rangeEnd is empty or not an integer']);
         }
-        if (!Validator::intVal()->notEmpty()->validate($body['siteId'])) {
-            return $response->withStatus(400)->withJson(['errors' => 'Body siteId is empty or not an integer']);
-        }
         if ($body['rangeStart'] >= $body['rangeEnd']) {
             return $response->withStatus(400)->withJson(['errors' => 'Body rangeStart cannot be larger or equal  than rangeEnd', 'lang' => 'rangeStartLargerThanRangeEnd']);
         }
 
-        $site = IssuingSiteModel::getById(['id' => $body['siteId']]);
-        if (empty($site)) {
-            return $response->withStatus(400)->withJson(['errors' => 'Body siteId does not exist']);
-        }
-
         $ranges = RegisteredNumberRangeModel::get([
             'select' => [1],
             'where'  => ['tracking_account_number = ?', 'id != ?'],
@@ -231,8 +193,8 @@ class RegisteredNumberRangeController
 
         $ranges = RegisteredNumberRangeModel::get([
             'select'  => ['range_start', 'range_end'],
-            'where'   => ['type = ?', 'id != ?', 'site_id = ?'],
-            'data'    => [$body['registeredMailType'], $args['id'], $range['site_id']],
+            'where'   => ['type = ?', 'id != ?'],
+            'data'    => [$body['registeredMailType'], $args['id']],
             'orderBy' => ['range_end desc']
         ]);
 
@@ -249,8 +211,8 @@ class RegisteredNumberRangeController
                     'status' => 'END',
                     'current_number' => null
                 ],
-                'where' => ['type = ?', 'status = ?', 'site_id = ?'],
-                'data'  => [$body['registeredMailType'], 'OK', $range['site_id']]
+                'where' => ['type = ?', 'status = ?'],
+                'data'  => [$body['registeredMailType'], 'OK']
             ]);
         }
 
@@ -280,7 +242,6 @@ class RegisteredNumberRangeController
                 'tracking_account_number' => $body['trackerNumber'],
                 'range_start'             => $body['rangeStart'],
                 'range_end'               => $body['rangeEnd'],
-                'site_id'                 => $body['siteId'],
                 'status'                  => $body['status'],
                 'current_number'          => $currentNumber
             ],
@@ -289,12 +250,12 @@ class RegisteredNumberRangeController
         ]);
 
         HistoryController::add([
-            'tableName' => 'issuing_sites',
+            'tableName' => 'registered_number_range',
             'recordId'  => $args['id'],
             'eventType' => 'UP',
             'info'      => _REGISTERED_NUMBER_RANGE_UPDATED . " : {$args['id']}",
-            'moduleId'  => 'issuing_sites',
-            'eventId'   => 'issuingSitesModification',
+            'moduleId'  => 'registered_number_range',
+            'eventId'   => 'registered_number_rangeModification',
         ]);
 
         return $response->withStatus(204);
diff --git a/src/app/registeredMail/models/RegisteredNumberRangeModel.php b/src/app/registeredMail/models/RegisteredNumberRangeModel.php
index c237a7b289d..ed873d64bc3 100644
--- a/src/app/registeredMail/models/RegisteredNumberRangeModel.php
+++ b/src/app/registeredMail/models/RegisteredNumberRangeModel.php
@@ -38,25 +38,25 @@ class RegisteredNumberRangeModel
         ValidatorModel::intVal($args, ['id']);
         ValidatorModel::arrayType($args, ['select']);
 
-        $site = DatabaseModel::select([
+        $range = DatabaseModel::select([
             'select' => empty($args['select']) ? ['*'] : $args['select'],
             'table'  => ['registered_mail_number_range'],
             'where'  => ['id = ?'],
             'data'   => [$args['id']]
         ]);
 
-        if (empty($site[0])) {
+        if (empty($range[0])) {
             return [];
         }
 
-        return $site[0];
+        return $range[0];
     }
 
     public static function create(array $args)
     {
-        ValidatorModel::notEmpty($args, ['type', 'rangeStart', 'rangeEnd', 'siteId', 'status']);
+        ValidatorModel::notEmpty($args, ['type', 'rangeStart', 'rangeEnd', 'status']);
         ValidatorModel::stringType($args, ['type', 'status']);
-        ValidatorModel::intVal($args, ['rangeStart', 'rangeEnd', 'siteId', 'currentNumber']);
+        ValidatorModel::intVal($args, ['rangeStart', 'rangeEnd', 'currentNumber']);
 
         $nextSequenceId = DatabaseModel::getNextSequenceValue(['sequenceId' => 'registered_mail_number_range_id_seq']);
 
@@ -69,7 +69,6 @@ class RegisteredNumberRangeModel
                 'range_start'             => $args['rangeStart'],
                 'range_end'               => $args['rangeEnd'],
                 'creator'                 => $args['creator'],
-                'site_id'                 => $args['siteId'],
                 'current_number'          => $args['currentNumber'],
                 'status'                  => $args['status']
             ]
diff --git a/src/frontend/app/administration/registered-mail/issuing-site/indexing/issuing-site-input.component.ts b/src/frontend/app/administration/registered-mail/issuing-site/indexing/issuing-site-input.component.ts
index 7cc3e09076a..15eecc03332 100644
--- a/src/frontend/app/administration/registered-mail/issuing-site/indexing/issuing-site-input.component.ts
+++ b/src/frontend/app/administration/registered-mail/issuing-site/indexing/issuing-site-input.component.ts
@@ -45,9 +45,7 @@ export class IssuingSiteInputComponent implements OnInit {
     }
 
     ngOnInit() {
-        if (this.registedMailType !== null) {
-            this.getIssuingSites(this.registedMailType);
-        }
+        this.getIssuingSites();
         if (!this.functions.empty(this.control.value)) {
             setTimeout(() => {
                 this.setAddress(this.control.value);
@@ -55,18 +53,16 @@ export class IssuingSiteInputComponent implements OnInit {
         }
     }
 
-    getIssuingSites(registeredMailType: string) {
-        this.registedMailType = registeredMailType;
+    getIssuingSites() {
         this.loading = true;
-        this.http.get(`../rest/registeredMail/ranges`).pipe(
+        this.http.get(`../rest/registeredMail/sites`).pipe(
             tap((data: any) => {
                 this.issuingSiteAddress = null;
-                this.issuingSiteList = data['ranges'].filter((item: any) => item.registeredMailType === registeredMailType && item.status === 'OK' && item.entities.indexOf(this.headerService.user.entities[0].id) > -1).map((item: any) => {
+                this.issuingSiteList = data['sites'].filter((item: any) => item.entities.indexOf(this.headerService.user.entities[0].id) > -1).map((item: any) => {
                     return {
                         ...item,
-                        id: item.siteId,
-                        label: `${item.label} (${item.customerAccountNumber})`,
-                        disabled: item.fullness === 100,
+                        id: item.id,
+                        label: `${item.label} (${item.accountNumber})`
                     };
                 });
             }),
diff --git a/src/frontend/app/administration/registered-mail/issuing-site/issuing-site.component.html b/src/frontend/app/administration/registered-mail/issuing-site/issuing-site.component.html
index 7c396820b8b..fde04b5f0a6 100644
--- a/src/frontend/app/administration/registered-mail/issuing-site/issuing-site.component.html
+++ b/src/frontend/app/administration/registered-mail/issuing-site/issuing-site.component.html
@@ -37,7 +37,7 @@
                                     {{'lang.address' | translate}}
                                 </div>
                                 <mat-form-field appearance='outline' class="smallInput">
-                                    <button mat-button matSuffix [matMenuTriggerFor]="menuDep"
+                                    <button type="button" mat-button matSuffix [matMenuTriggerFor]="menuDep"
                                         (click)="$event.stopPropagation();"
                                         [title]="this.translate.instant('lang.targetDepartment')">
                                         {{addressBANCurrentDepartment}}&nbsp;<i class="fa fa-chevron-down"></i>
diff --git a/src/frontend/app/administration/registered-mail/registered-mail-list.component.html b/src/frontend/app/administration/registered-mail/registered-mail-list.component.html
index 70d06056e6b..90fe2f69739 100644
--- a/src/frontend/app/administration/registered-mail/registered-mail-list.component.html
+++ b/src/frontend/app/administration/registered-mail/registered-mail-list.component.html
@@ -51,13 +51,6 @@
                         </div>
                     </div>
                     <mat-table #table [dataSource]="adminService.getDataSource()" matSort matSortDisableClear>
-                        <ng-container matColumnDef="label">
-                            <mat-header-cell *matHeaderCellDef mat-sort-header style="flex:2">
-                                {{'lang.issuingSite' | translate}}
-                            </mat-header-cell>
-                            <mat-cell *matCellDef="let element" style="flex:2">
-                                {{element.label}} </mat-cell>
-                        </ng-container>
                         <ng-container matColumnDef="trackerNumber">
                             <mat-header-cell *matHeaderCellDef mat-sort-header style="flex:2">
                                 {{'lang.trackerNumber' | translate}}
diff --git a/src/frontend/app/administration/registered-mail/registered-mail-list.component.ts b/src/frontend/app/administration/registered-mail/registered-mail-list.component.ts
index 99fa9fdbe40..17d2a0711cd 100644
--- a/src/frontend/app/administration/registered-mail/registered-mail-list.component.ts
+++ b/src/frontend/app/administration/registered-mail/registered-mail-list.component.ts
@@ -43,8 +43,8 @@ export class RegisteredMailListComponent implements OnInit {
 
     data: any[] = [];
 
-    displayedColumns = ['trackerNumber', 'label', 'typeLabel', 'rangeNumber', 'currentNumber', 'status', 'fullness', 'actions'];
-    filterColumns = ['label', 'trackerNumber', 'typeLabel', 'rangeNumber', 'currentNumber', 'fullness', 'statusLabel'];
+    displayedColumns = ['trackerNumber', 'typeLabel', 'rangeNumber', 'currentNumber', 'status', 'fullness', 'actions'];
+    filterColumns = ['trackerNumber', 'typeLabel', 'rangeNumber', 'currentNumber', 'fullness', 'statusLabel'];
 
     @ViewChild(MatPaginator, { static: false }) paginator: MatPaginator;
     @ViewChild(MatSort, { static: false }) sort: MatSort;
diff --git a/src/frontend/app/administration/registered-mail/registered-mail.component.html b/src/frontend/app/administration/registered-mail/registered-mail.component.html
index b5a82e790e0..833f4651f84 100644
--- a/src/frontend/app/administration/registered-mail/registered-mail.component.html
+++ b/src/frontend/app/administration/registered-mail/registered-mail.component.html
@@ -27,15 +27,6 @@
                                 <mat-label>{{'lang.trackerNumber' | translate}}</mat-label>
                                 <input matInput formControlName="trackerNumber">
                             </mat-form-field>
-                            <plugin-select-search *ngIf="customerAccountNumberList.length > 0" [showLabel]="true"
-                                [label]="this.translate.instant('lang.issuingSite')"
-                                [placeholderLabel]="this.translate.instant('lang.issuingSite')"
-                                [datas]="customerAccountNumberList" [class]="''"
-                                [formControlSelect]="adminFormGroup.controls['siteId']">
-                            </plugin-select-search>
-                            <div *ngIf="customerAccountNumberList.length === 0" class="alert-message alert-message-danger">
-                                {{'lang.registeredMailNoIssuingSites' | translate}}
-                            </div>
                             <plugin-select-search [showLabel]="true" [label]="this.translate.instant('lang.registeredMailType')"
                                 [placeholderLabel]="this.translate.instant('lang.registeredMailType')" [datas]="registeredMailType"
                                 [class]="''" [formControlSelect]="adminFormGroup.controls['registeredMailType']">
diff --git a/src/frontend/app/administration/registered-mail/registered-mail.component.ts b/src/frontend/app/administration/registered-mail/registered-mail.component.ts
index 858ace1026a..ad5901920b4 100644
--- a/src/frontend/app/administration/registered-mail/registered-mail.component.ts
+++ b/src/frontend/app/administration/registered-mail/registered-mail.component.ts
@@ -23,8 +23,6 @@ export class RegisteredMailComponent implements OnInit {
     id: number = null;
     minRange: number = 1;
 
-    customerAccountNumberList: any[] = [];
-
     registeredMailType: any[] = [
         {
             id: '2D',
@@ -53,14 +51,12 @@ export class RegisteredMailComponent implements OnInit {
 
     ngOnInit(): void {
         this.route.params.subscribe(async (params) => {
-            this.getIssuingSites();
             if (typeof params['id'] === 'undefined') {
                 this.creationMode = true;
                 this.headerService.setHeader(this.translate.instant('lang.registeredMailNumberRangeCreation'));
 
                 this.adminFormGroup = this._formBuilder.group({
                     id: [null],
-                    siteId: [null, Validators.required],
                     trackerNumber: [null, Validators.required],
                     registeredMailType: [null, Validators.required],
                     rangeStart: [1, Validators.required],
@@ -108,30 +104,12 @@ export class RegisteredMailComponent implements OnInit {
         });
     }
 
-    getIssuingSites() {
-        this.http.get('../rest/registeredMail/sites').pipe(
-            tap((data: any) => {
-                this.customerAccountNumberList = data['sites'].map((item: any) => {
-                    return {
-                        id: item.id,
-                        label: `${item.label} (${item.accountNumber})`
-                    };
-                });
-            }),
-            catchError((err: any) => {
-                this.notify.handleSoftErrors(err);
-                return of(false);
-            })
-        ).subscribe();
-    }
-
     getData() {
         return new Promise((resolve) => {
             this.http.get(`../rest/registeredMail/ranges/${this.id}`).pipe(
                 tap((data: any) => {
                     this.adminFormGroup = this._formBuilder.group({
                         id: [this.id],
-                        siteId: [data.range.siteId],
                         trackerNumber: [data.range.trackerNumber],
                         registeredMailType: [data.range.registeredMailType],
                         rangeStart: [data.range.rangeStart],
diff --git a/src/frontend/app/indexation/indexing-form/indexing-form.component.ts b/src/frontend/app/indexation/indexing-form/indexing-form.component.ts
index 85232eba50a..1b7b6162eb7 100755
--- a/src/frontend/app/indexation/indexing-form/indexing-form.component.ts
+++ b/src/frontend/app/indexation/indexing-form/indexing-form.component.ts
@@ -797,7 +797,7 @@ export class IndexingFormComponent implements OnInit {
                                 }
 
                                 if (elem.identifier === 'registeredMail_type') {
-                                    this.getIssuingSites(null, fieldValue, false);
+                                    this.getIssuingSites(null, fieldValue);
                                 }
 
                                 if (elem.identifier === 'priority') {
@@ -1214,23 +1214,19 @@ export class IndexingFormComponent implements OnInit {
     /**
      * [Registered mail module]
      */
-    getIssuingSites(field: any, value: any, resetIssuingSite: boolean = true) {
+    getIssuingSites(field: any, value: any) {
         this.fieldCategories.forEach(element => {
             this['indexingModels_' + element].forEach((fieldItem: any) => {
                 if (fieldItem.identifier === 'registeredMail_warranty') {
                     fieldItem.values[2].disabled = value === 'RW';
                 }
-
-                if (fieldItem.identifier === 'registeredMail_issuingSite' && resetIssuingSite) {
-                    this.arrFormControl['registeredMail_issuingSite'].setValue('');
-                }
             });
             if (value === 'RW' && this.arrFormControl['registeredMail_warranty'].value === 'R3') {
                 this.arrFormControl['registeredMail_warranty'].setValue('R1');
             }
         });
         if (!this.functions.empty(this.appIssuingSiteInput)) {
-            this.appIssuingSiteInput.getIssuingSites(value);
+            this.appIssuingSiteInput.registedMailType = value;
         }
     }
 
diff --git a/src/lang/lang-en.json b/src/lang/lang-en.json
index b40b0d8047b..e578a114261 100644
--- a/src/lang/lang-en.json
+++ b/src/lang/lang-en.json
@@ -1921,7 +1921,7 @@
     "rangeStartLargerThanRangeEnd": "Range start cannot be larger than range end",
     "trackingNumberAlreadyUsed": "Tracking number is already used",
     "rangeOverlaps": "Range overlaps another range",
-    "siteIsUsedByActiveRange": "Cannot delete issuing site : site is used by an active range",
+    "siteIsUsedByRegisteredMail": "Cannot delete issuing site : site is used in a registered mail",
     "fieldsNotValid": "Fields are invalid",
     "arReception": "AR reception",
     "returnType": "Return type",
@@ -1957,7 +1957,6 @@
     "issuingSiteAdded": "Issuing site added",
     "issuingSiteUpdated": "Issuing site updated",
     "registeredMailNumberRanges": "registered mail number ranges",
-    "customerAccountNumber": "Customer account number",
     "trackerNumber": "Tracker number",
     "registeredMailType": "Registered mail type",
     "rangeNumber": "Range",
diff --git a/src/lang/lang-fr.json b/src/lang/lang-fr.json
index f78b8ed3b34..bf545f03c1a 100644
--- a/src/lang/lang-fr.json
+++ b/src/lang/lang-fr.json
@@ -1908,7 +1908,6 @@
     "issuingSiteAdded": "Site émetteur ajouté",
     "issuingSiteUpdated": "Site émetteur modifié",
     "registeredMailNumberRanges": "Plages de numéros de recommandés",
-    "customerAccountNumber": "Numéro de client",
     "trackerNumber": "Numéro de suivi",
     "registeredMailType": "Type de recommandé",
     "rangeNumber": "Plage",
@@ -1958,7 +1957,7 @@
     "rangeStartLargerThanRangeEnd": "Le début de la plage ne peut pas être plus grand que la fin de la plage",
     "trackingNumberAlreadyUsed": "Le numéro de suivi est déjà utilisé",
     "rangeOverlaps": "La plage chevauche une autre plage",
-    "siteIsUsedByActiveRange": "Impossible de supprimer le site émetteur : le site est utilisé par une plage active",
+    "siteIsUsedByRegisteredMail": "Impossible de supprimer le site émetteur : le site est utilisé dans un recommandé",
     "fieldsNotValid": "Les données saisies sont invalides",
     "arReception": "Réception des AR",
     "returnType": "Type de retour",
diff --git a/src/lang/lang-nl.json b/src/lang/lang-nl.json
index 419a6abf86a..3b08bf6f598 100644
--- a/src/lang/lang-nl.json
+++ b/src/lang/lang-nl.json
@@ -1925,7 +1925,6 @@
     "issuingSiteAdded": "Site émetteur ajouté__TO_TRANSLATE",
     "issuingSiteUpdated": "Site émetteur modifié__TO_TRANSLATE",
     "registeredMailNumberRanges": "Plages de numéros de recommandés__TO_TRANSLATE",
-    "customerAccountNumber": "Numéro de client__TO_TRANSLATE",
     "trackerNumber": "Numéro de suivi__TO_TRANSLATE",
     "registeredMailType": "Type de recommandé__TO_TRANSLATE",
     "rangeNumber": "Plage__TO_TRANSLATE",
@@ -1970,7 +1969,7 @@
     "rangeStartLargerThanRangeEnd": "Le début de la plage ne peut pas être plus grand que la fin de la plage__TO_TRANSLATE",
     "trackingNumberAlreadyUsed": "Le numéro de suivi est déjà utilisé__TO_TRANSLATE",
     "rangeOverlaps": "La plage chevauche une autre plage__TO_TRANSLATE",
-    "siteIsUsedByActiveRange": "Impossible de supprimer le site émetteur : le site est utilisé par une plage active__TO_TRANSLATE",
+    "siteIsUsedByRegisteredMail": "Impossible de supprimer le site émetteur : le site est utilisé dans un recommandé__TO_TRANSLATE",
     "fieldsNotValid": "Les données saisies sont invalides__TO_TRANSLATE",
     "arReception": "Réception des AR__TO_TRANSLATE",
     "returnType": "Type de retour__TO_TRANSLATE",
diff --git a/test/unitTests/app/registeredMail/IssuingSiteControllerTest.php b/test/unitTests/app/registeredMail/IssuingSiteControllerTest.php
index ecb9161ade2..9773701a27f 100644
--- a/test/unitTests/app/registeredMail/IssuingSiteControllerTest.php
+++ b/test/unitTests/app/registeredMail/IssuingSiteControllerTest.php
@@ -322,84 +322,6 @@ class IssuingSiteControllerTest extends TestCase
         $GLOBALS['id'] = $userInfo['id'];
     }
 
-    public function testGetLastNumberByType()
-    {
-        $issuingSiteController = new \RegisteredMail\controllers\IssuingSiteController();
-        $registeredNumberRangeController = new \RegisteredMail\controllers\RegisteredNumberRangeController();
-
-        //  GET
-        $environment = \Slim\Http\Environment::mock(['REQUEST_METHOD' => 'GET']);
-        $request = \Slim\Http\Request::createFromEnvironment($environment);
-
-        $response = $issuingSiteController->getByType($request, new \Slim\Http\Response(), ['type' => '2D']);
-        $this->assertSame(200, $response->getStatusCode());
-        $responseBody = json_decode((string)$response->getBody(), true);
-
-        $this->assertIsArray($responseBody['sites']);
-        $this->assertNotEmpty($responseBody['sites']);
-
-        $body = [
-            'registeredMailType' => '2D',
-            'trackerNumber'      => 'AZPOKF30KDZP',
-            'rangeStart'         => 1,
-            'rangeEnd'           => 1000,
-            'siteId'             => self::$id,
-            'status'             => 'OK'
-        ];
-        $fullRequest = \httpRequestCustom::addContentInBody($body, $request);
-
-        $response = $registeredNumberRangeController->create($fullRequest, new \Slim\Http\Response());
-        $this->assertSame(200, $response->getStatusCode());
-        $responseBody = json_decode((string)$response->getBody(), true);
-        $this->assertIsInt($responseBody['id']);
-
-        $rangeId = $responseBody['id'];
-
-        $response = $issuingSiteController->getByType($request, new \Slim\Http\Response(), ['type' => '2D']);
-        $this->assertSame(200, $response->getStatusCode());
-        $responseBody = json_decode((string)$response->getBody(), true);
-
-        $this->assertIsArray($responseBody['sites']);
-        $this->assertNotEmpty($responseBody['sites']);
-        $this->assertSame(2, count($responseBody['sites']));
-
-        $this->assertSame(self::$id, $responseBody['sites'][1]['id']);
-        $this->assertSame('Scranton - UP', $responseBody['sites'][1]['label']);
-        $this->assertSame('Scranton Post Office', $responseBody['sites'][1]['postOfficeLabel']);
-        $this->assertSame(42, $responseBody['sites'][1]['accountNumber']);
-        $this->assertSame('1725', $responseBody['sites'][1]['addressNumber']);
-        $this->assertSame('Slough Avenue', $responseBody['sites'][1]['addressStreet']);
-        $this->assertEmpty($responseBody['sites'][1]['addressAdditional1']);
-        $this->assertEmpty($responseBody['sites'][1]['addressAdditional2']);
-        $this->assertSame('18505', $responseBody['sites'][1]['addressPostcode']);
-        $this->assertSame('Scranton', $responseBody['sites'][1]['addressTown']);
-        $this->assertSame('USA', $responseBody['sites'][1]['addressCountry']);
-
-        \RegisteredMail\models\RegisteredNumberRangeModel::update([
-            'set'   => [
-                'status' => 'SPD'
-            ],
-            'where' => ['id = ?'],
-            'data'  => [$rangeId]
-        ]);
-
-        $response = $registeredNumberRangeController->delete($request, new \Slim\Http\Response(), ['id' => $rangeId]);
-        $this->assertSame(204, $response->getStatusCode());
-
-        $GLOBALS['login'] = 'bbain';
-        $userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['login'], 'select' => ['id']]);
-        $GLOBALS['id'] = $userInfo['id'];
-
-        $response = $issuingSiteController->getByType($request, new \Slim\Http\Response(), ['type' => '2D']);
-        $this->assertSame(403, $response->getStatusCode());
-        $responseBody = json_decode((string)$response->getBody(), true);
-        $this->assertSame('Service forbidden', $responseBody['errors']);
-
-        $GLOBALS['login'] = 'superadmin';
-        $userInfo = \User\models\UserModel::getByLogin(['login' => $GLOBALS['login'], 'select' => ['id']]);
-        $GLOBALS['id'] = $userInfo['id'];
-    }
-
     public function testDelete()
     {
         $issuingSiteController = new \RegisteredMail\controllers\IssuingSiteController();
diff --git a/test/unitTests/app/registeredMail/RegisteredNumberRangeControllerTest.php b/test/unitTests/app/registeredMail/RegisteredNumberRangeControllerTest.php
index f298dc3f9df..b818cd5a523 100644
--- a/test/unitTests/app/registeredMail/RegisteredNumberRangeControllerTest.php
+++ b/test/unitTests/app/registeredMail/RegisteredNumberRangeControllerTest.php
@@ -238,10 +238,8 @@ class RegisteredNumberRangeControllerTest extends TestCase
                 $this->assertSame('AZPOKF30KDZP', $range['trackerNumber']);
                 $this->assertSame(11, $range['rangeStart']);
                 $this->assertSame(1000, $range['rangeEnd']);
-                $this->assertSame(self::$siteId, $range['siteId']);
                 $this->assertSame($GLOBALS['id'], $range['creator']);
                 $this->assertNull($range['currentNumber']);
-                $this->assertIsArray($range['entities']);
                 $this->assertSame(0, $range['fullness']);
                 $found = true;
             }
@@ -271,7 +269,6 @@ class RegisteredNumberRangeControllerTest extends TestCase
         $this->assertSame('AZPOKF30KDZP', $responseBody['range']['trackerNumber']);
         $this->assertSame(11, $responseBody['range']['rangeStart']);
         $this->assertSame(1000, $responseBody['range']['rangeEnd']);
-        $this->assertSame(self::$siteId, $responseBody['range']['siteId']);
         $this->assertSame($GLOBALS['id'], $responseBody['range']['creator']);
         $this->assertNull($responseBody['range']['currentNumber']);
         $this->assertSame(0, $responseBody['range']['fullness']);
-- 
GitLab