From 4dfed25a7b3c3f74705fd6340ca51e2417bc0b30 Mon Sep 17 00:00:00 2001
From: Guillaume Heurtier <guillaume.heurtier@maarch.org>
Date: Wed, 23 Sep 2020 12:07:40 +0200
Subject: [PATCH] FEAT #14006 TIME 2:00 add registered mail data to basket list

---
 .../controllers/ResourceListController.php    | 27 +++++++++++++++++++
 .../list/list-administration.component.ts     | 18 +++++++++++++
 src/lang/lang-en.json                         |  7 +++--
 src/lang/lang-fr.json                         |  5 +++-
 4 files changed, 54 insertions(+), 3 deletions(-)

diff --git a/src/app/resource/controllers/ResourceListController.php b/src/app/resource/controllers/ResourceListController.php
index 5ad080c3acb..fdad8d0539c 100644
--- a/src/app/resource/controllers/ResourceListController.php
+++ b/src/app/resource/controllers/ResourceListController.php
@@ -33,6 +33,8 @@ use Folder\models\FolderModel;
 use Group\models\GroupModel;
 use Note\models\NoteModel;
 use Priority\models\PriorityModel;
+use RegisteredMail\models\IssuingSiteModel;
+use RegisteredMail\models\RegisteredMailModel;
 use Resource\models\ResModel;
 use Resource\models\ResourceListModel;
 use Resource\models\UserFollowedResourceModel;
@@ -898,6 +900,11 @@ class ResourceListController
 
             if (isset($args['listDisplay'])) {
                 $display = [];
+                $listDisplayValues = array_column($args['listDisplay'], 'value');
+                if (in_array('getRegisteredMailRecipient', $listDisplayValues) || in_array('getRegisteredMailReference', $listDisplayValues)
+                    || in_array('getRegisteredMailIssuingSite', $listDisplayValues)) {
+                    $registeredMail = RegisteredMailModel::getByResId(['resId' => $resource['res_id'], 'select' => ['issuing_site', 'recipient', 'reference']]);
+                }
                 foreach ($args['listDisplay'] as $value) {
                     $value = (array)$value;
                     if ($value['value'] == 'getPriority') {
@@ -942,6 +949,26 @@ class ResourceListController
                     } elseif ($value['value'] == 'getBarcode') {
                         $value['displayValue'] = $resource['barcode'];
                         $display[] = $value;
+                    } elseif ($value['value'] == 'getRegisteredMailRecipient') {
+                        if (!empty($registeredMail)) {
+                            $recipient = json_decode($registeredMail['recipient'], true);
+                            $recipient = $recipient['company'] . ' ' . $recipient['firstname'] . ' ' . $recipient['lastname'];
+                            $value['displayValue'] = $recipient;
+                        } else {
+                            $value['displayValue'] = '';
+                        }
+                        $display[] = $value;
+                    }  elseif ($value['value'] == 'getRegisteredMailReference') {
+                        $value['displayValue'] = !empty($registeredMail) ? $registeredMail['reference'] : '';
+                        $display[] = $value;
+                    }  elseif ($value['value'] == 'getRegisteredMailIssuingSite') {
+                        if (!empty($registeredMail)) {
+                            $site = IssuingSiteModel::getById(['id' => $registeredMail['issuing_site'], 'select' => ['label']]);
+                            $value['displayValue'] = $site['label'];
+                        } else {
+                            $value['displayValue'] = '';
+                        }
+                        $display[] = $value;
                     } elseif (strpos($value['value'], 'indexingCustomField_') !== false) {
                         $customId = explode('_', $value['value'])[1];
                         $customValue = json_decode($resource['custom_fields'], true);
diff --git a/src/frontend/app/administration/basket/list/list-administration.component.ts b/src/frontend/app/administration/basket/list/list-administration.component.ts
index 6a57d354a5b..fe8dffd6b01 100644
--- a/src/frontend/app/administration/basket/list/list-administration.component.ts
+++ b/src/frontend/app/administration/basket/list/list-administration.component.ts
@@ -141,6 +141,24 @@ export class ListAdministrationComponent implements OnInit {
             'sample': this.translate.instant('lang.getBarcodeSample'),
             'cssClasses': ['align_leftData'],
             'icon': 'fa-barcode'
+        }, {
+            'value': 'getRegisteredMailRecipient',
+            'label': this.translate.instant('lang.registeredMailRecipient'),
+            'sample': this.translate.instant('lang.registeredMailRecipientSample'),
+            'cssClasses': ['align_leftData'],
+            'icon': 'fa-user'
+        }, {
+            'value': 'getRegisteredMailReference',
+            'label': this.translate.instant('lang.registeredMailReference'),
+            'sample': this.translate.instant('lang.registeredMailReferenceSample'),
+            'cssClasses': ['align_leftData'],
+            'icon': 'fa-hashtag'
+        }, {
+            'value': 'getRegisteredMailIssuingSite',
+            'label': this.translate.instant('lang.issuingSite'),
+            'sample': this.translate.instant('lang.issuingSiteSample'),
+            'cssClasses': ['align_leftData'],
+            'icon': 'fas fa-warehouse'
         }
     ];
     availableDataClone: any = [];
diff --git a/src/lang/lang-en.json b/src/lang/lang-en.json
index cdcdf967d5e..26a5d5bbb9d 100644
--- a/src/lang/lang-en.json
+++ b/src/lang/lang-en.json
@@ -2006,7 +2006,10 @@
     "searchAdministration" : "Search administration",
     "searchTemplateAdded": "Search template added",
     "searchTemplateCreation": "Search template creation",
-    "addSearchTemplateMsg": "This template will be private. All criterias and values selected will be saved",
+    "addSearchTemplateMsg": "This template will be private. All criteria and values selected will be saved",
     "mySearchTemplates": "My templates",
-    "searchTemplateDeleted": "Search template deleted"
+    "searchTemplateDeleted": "Search template deleted",
+    "issuingSiteSample": "MAARCH - Nanterre",
+    "registeredMailReferenceSample": "01/01/2020 - My reference",
+    "registeredMailRecipientSample": "MAARCH-LES-BAINS PATRICIA PETIT"
 }
diff --git a/src/lang/lang-fr.json b/src/lang/lang-fr.json
index ae4364e21e5..3a41056c044 100644
--- a/src/lang/lang-fr.json
+++ b/src/lang/lang-fr.json
@@ -2011,5 +2011,8 @@
     "mySearchTemplates": "Mes modèles",
     "searchTemplateDeleted": "Modèle de recherche supprimé",
     "searchAdministration" : "Administration recherche",
-    "contactInput" : "Champ contact"
+    "contactInput" : "Champ contact",
+    "issuingSiteSample": "MAARCH - Nanterre",
+    "registeredMailReferenceSample": "01/01/2020 - Ma référence",
+    "registeredMailRecipientSample": "MAARCH-LES-BAINS PATRICIA PETIT"
 }
-- 
GitLab