From d98c46ece651cf0edd872daffdae99b7dfa7f0d2 Mon Sep 17 00:00:00 2001
From: Alex ORLUC <alex.orluc@maarch.org>
Date: Wed, 13 Feb 2019 16:00:02 +0100
Subject: [PATCH] FEAT #9156 add getSignatories data Page list

---
 .../controllers/ResourceListController.php    | 26 +++++++++++++++++++
 .../list/list-administration.component.ts     |  7 +++++
 .../app/list/basket-list.component.ts         |  7 +++++
 src/frontend/lang/lang-en.ts                  |  1 +
 src/frontend/lang/lang-fr.ts                  |  1 +
 src/frontend/lang/lang-nl.ts                  |  1 +
 6 files changed, 43 insertions(+)

diff --git a/src/app/resource/controllers/ResourceListController.php b/src/app/resource/controllers/ResourceListController.php
index d6f1040ae92..cb559fb4042 100644
--- a/src/app/resource/controllers/ResourceListController.php
+++ b/src/app/resource/controllers/ResourceListController.php
@@ -181,6 +181,9 @@ class ResourceListController
                     } elseif ($value['value'] == 'getVisaWorkflow') {
                         $value['displayValue'] = ResourceListController::getVisaWorkflow(['resId' => $resource['res_id']]);
                         $display[] = $value;
+                    } elseif ($value['value'] == 'getSignatories') {
+                        $value['displayValue'] = ResourceListController::getSignatories(['resId' => $resource['res_id']]);
+                        $display[] = $value;
                     } elseif ($value['value'] == 'getParallelOpinionsNumber') {
                         $value['displayValue'] = ResourceListController::getParallelOpinionsNumber(['resId' => $resource['res_id']]);
                         $display[] = $value;
@@ -624,6 +627,29 @@ class ResourceListController
         return $users;
     }
 
+    private static function getSignatories(array $args)
+    {
+        ValidatorModel::notEmpty($args, ['resId']);
+        ValidatorModel::intVal($args, ['resId']);
+
+        $listInstances = ListInstanceModel::get([
+            'select'    => ['item_id', 'process_date'],
+            'where'     => ['difflist_type = ?', 'res_id = ?' ,'requested_signature = ?'],
+            'data'      => ['VISA_CIRCUIT', $args['resId'], true],
+            'orderBy'   => ['listinstance_id']
+        ]);
+
+        $users = [];
+        foreach ($listInstances as $listInstance) {
+            $users[] = [
+                'user'      => UserModel::getLabelledUserById(['login' => $listInstance['item_id']]),
+                'date'      => TextFormatModel::formatDate($listInstance['process_date']),
+            ];
+        }
+
+        return $users;
+    }
+
     private static function getSenders(array $args)
     {
         ValidatorModel::notEmpty($args, ['resId']);
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 1c8f9ca5d05..58904453a0e 100644
--- a/src/frontend/app/administration/basket/list/list-administration.component.ts
+++ b/src/frontend/app/administration/basket/list/list-administration.component.ts
@@ -92,6 +92,13 @@ export class ListAdministrationComponent implements OnInit {
             'cssClasses': [],
             'icon': 'fa-list-ol'
         },
+        {
+            'value': 'getSignatories',
+            'label': this.lang.getSignatories,
+            'sample': 'Denis DAULL, Patricia PETIT',
+            'cssClasses': [],
+            'icon': 'fa-certificate'
+        },
         {
             'value': 'getModificationDate',
             'label': this.lang.getModificationDate,
diff --git a/src/frontend/app/list/basket-list.component.ts b/src/frontend/app/list/basket-list.component.ts
index 4f20334d32d..558d2f31f84 100755
--- a/src/frontend/app/list/basket-list.component.ts
+++ b/src/frontend/app/list/basket-list.component.ts
@@ -278,6 +278,13 @@ export class BasketListComponent implements OnInit {
                     });
                     key.displayValue = formatWorkflow.join(' <i class="fas fa-long-arrow-alt-right"></i> ');
                     key.displayTitle = displayTitle.join(' - ');
+                } else if (key.value == 'getSignatories') {
+                    let userList: any[] = [];
+                    key.displayValue.forEach((visa: any) => {
+                        userList.push(visa.user);
+                    });
+                    key.displayValue = userList.join(', ');
+                    key.displayTitle = userList.join(', ');
                 } else if (key.value == 'getParallelOpinionsNumber') {
                     key.displayTitle = key.displayValue + ' ' + this.lang.opinionsSent;
 
diff --git a/src/frontend/lang/lang-en.ts b/src/frontend/lang/lang-en.ts
index 1ddeb0ecacf..800fc447fc5 100755
--- a/src/frontend/lang/lang-en.ts
+++ b/src/frontend/lang/lang-en.ts
@@ -831,4 +831,5 @@ export const LANG_EN = {
     "getOpinionLimitDate"                      : "Opinion limit date",
     "getModificationDate"                      : "Modification date",
     "opinionsSent"                      : "opinion(s) sent",
+    "getSignatories"                      : "Signatories",  
 };
diff --git a/src/frontend/lang/lang-fr.ts b/src/frontend/lang/lang-fr.ts
index 8e09e3c2524..2d368d76044 100755
--- a/src/frontend/lang/lang-fr.ts
+++ b/src/frontend/lang/lang-fr.ts
@@ -857,4 +857,5 @@ export const LANG_FR = {
     "getOpinionLimitDate"                      : "Date limite d'envoi des avis",
     "getModificationDate"                      : "Date de mise à jour",
     "opinionsSent"                      : "avis donné(s)",  
+    "getSignatories"                      : "Signataires(s)",  
 };
diff --git a/src/frontend/lang/lang-nl.ts b/src/frontend/lang/lang-nl.ts
index 7daafd25868..de7e0c5cfa6 100755
--- a/src/frontend/lang/lang-nl.ts
+++ b/src/frontend/lang/lang-nl.ts
@@ -860,5 +860,6 @@ export const LANG_NL = {
     "getOpinionLimitDate"                      : "Opinion limit date", //_TO_TRANSLATE
     "getModificationDate"                      : "Modification date", //_TO_TRANSLATE
     "opinionsSent"                      : "opinion(s) sent", //_TO_TRANSLATE
+    "getSignatories"                      : "Signatories", //_TO_TRANSLATE
 
 };
-- 
GitLab