From 9c9db3825d9d308810dcf1d42a75073c44291ab7 Mon Sep 17 00:00:00 2001
From: Guillaume Heurtier <guillaume.heurtier@maarch.org>
Date: Thu, 26 Nov 2020 11:04:46 +0100
Subject: [PATCH] FEAT #11896 TIME 1:45 check history privilege + show MP
 workflow status in summary sheet + fix var lang

---
 .../controllers/SummarySheetController.php     | 12 ++++++++++++
 src/core/lang/lang-en.php                      |  7 +++----
 src/core/lang/lang-fr.php                      |  7 +++----
 .../summarySheet/summary-sheet.component.ts    | 18 ++++++++++++------
 4 files changed, 30 insertions(+), 14 deletions(-)

diff --git a/src/app/resource/controllers/SummarySheetController.php b/src/app/resource/controllers/SummarySheetController.php
index 4bee8e3ccfe..2898fed31d0 100755
--- a/src/app/resource/controllers/SummarySheetController.php
+++ b/src/app/resource/controllers/SummarySheetController.php
@@ -21,6 +21,7 @@ use Endroid\QrCode\QrCode;
 use Entity\models\EntityModel;
 use Entity\models\ListInstanceModel;
 use ExternalSignatoryBook\controllers\MaarchParapheurController;
+use Group\controllers\PrivilegeController;
 use History\models\HistoryModel;
 use IndexingModel\models\IndexingModelFieldModel;
 use Note\models\NoteEntityModel;
@@ -828,6 +829,13 @@ class SummarySheetController
                     $users = [];
                     foreach ($workflow as $item) {
                         $label = $item['userDisplay'] . ' (' . ($item['mode'] == 'visa' ? _VISA_USER_MIN : _SIGNATORY) . ')';
+                        if (!empty($item['status'])) {
+                            if ($item['status'] == 'VAL') {
+                                $label .= ', ' . _MAARCH_PARAPHEUR_STATUS_VAL;
+                            } elseif ($item['status'] == 'REF') {
+                                $label .= ', ' . _MAARCH_PARAPHEUR_STATUS_REF;
+                            }
+                        }
                         $users[] = ['user' => $label, 'date' => $item['processDate']];
                     }
 
@@ -850,6 +858,10 @@ class SummarySheetController
                     }
                 }
             } elseif ($unit['unit'] == 'workflowHistory') {
+                if (!PrivilegeController::hasPrivilege(['privilegeId' => 'view_doc_history', 'userId' => $GLOBALS['id']])) {
+                    continue;
+                }
+
                 $historyList = HistoryModel::get([
                     'select'  => ['record_id', 'event_date', 'user_id', 'info', 'remote_ip', 'count(1) OVER()'],
                     'where'   => ['table_name in (?)', 'event_type like ?', 'record_id = ?'],
diff --git a/src/core/lang/lang-en.php b/src/core/lang/lang-en.php
index f98f3638043..4617caa1099 100755
--- a/src/core/lang/lang-en.php
+++ b/src/core/lang/lang-en.php
@@ -126,7 +126,6 @@ define('_EMAIL', 'Email');
 define('_FAX', 'Fax');
 define('_CHRONOPOST', 'Chronopost');
 define('_FEDEX', 'Fedex');
-define('_REGISTERED_MAIL', 'Registered mail with acknowledgement of receipt');
 define('_COURIER', 'Courier');
 define('_NUMERIC_PACKAGE', 'Numeric package');
 define('_OTHER', 'Other');
@@ -468,9 +467,6 @@ define("_RETENTION_RULE_FROZEN", "Retention rule frozen");
 define("_BINDING_DOCUMENT", "Binding document");
 define("_YES", "Yes");
 define("_NO", "No");
-define("_RESET_BINDING_DOCUMENT", "Reset binding document");
-define("_SET_BINDING_DOCUMENT", "Mail was set as binding");
-define("_SET_NON_BINDING_DOCUMENT", "Mail was set as non binding");
 define("_FREEZE_RETENTION_RULE", "Retention rule frozen");
 define("_UNFREEZE_RETENTION_RULE", "Retention rule unfrozen");
 
@@ -499,3 +495,6 @@ define('_RESET_RECORD_MANAGEMENT', 'Reset record management');
 define('_RESET_RECORD_MANAGEMENT_DESC', 'Reset record management');
 
 define('_USER_SKIPPED', 'User skipped');
+
+define('_MAARCH_PARAPHEUR_STATUS_VAL', 'Validé');
+define('_MAARCH_PARAPHEUR_STATUS_REF', 'Refusé');
diff --git a/src/core/lang/lang-fr.php b/src/core/lang/lang-fr.php
index db3a45f9869..0e552f9d39c 100755
--- a/src/core/lang/lang-fr.php
+++ b/src/core/lang/lang-fr.php
@@ -126,7 +126,6 @@ define('_EMAIL', 'Courriel');
 define('_FAX', 'Fax');
 define('_CHRONOPOST', 'Chronopost');
 define('_FEDEX', 'Fedex');
-define('_REGISTERED_MAIL', 'Courrier AR');
 define('_COURIER', 'Coursier');
 define('_NUMERIC_PACKAGE', 'Pli numérique');
 define('_OTHER', 'Autre');
@@ -461,7 +460,6 @@ define("_DOC_ADD_TO_SIGNATORY_BOOK", "Courrier intégré au parapheur électroni
 define("_DOC_REMOVE_FROM_SIGNATORY_BOOK", "Courrier retiré du parapheur électronique");
 define("_DOC_ADD_TO_MAILEVA", "Courrier intégré aux envois Maileva");
 define("_DOC_REMOVE_FROM_MAILEVA", "Courrier retiré des envois Maileva");
-define("_RESET_BINDING_DOCUMENT", "Suppression de l'engagement du courrier");
 define("_SET_BINDING_DOCUMENT", "Courrier défini comme engageant");
 define("_SET_NON_BINDING_DOCUMENT", "Courrier défini comme non engageant");
 define("_RETENTION_RULE_FROZEN", "Durée d'utilitée courante gelée");
@@ -469,8 +467,6 @@ define("_BINDING_DOCUMENT", "Document engageant");
 define("_YES", "Oui");
 define("_NO", "Non");
 define("_RESET_BINDING_DOCUMENT", "Paramètre Document engageant supprimé");
-define("_SET_BINDING_DOCUMENT", "Le document a été défini comme engageant");
-define("_SET_NON_BINDING_DOCUMENT", "Le document a été défini comme non engageant");
 define("_FREEZE_RETENTION_RULE", "La durée d'utilité courante a été gelée");
 define("_UNFREEZE_RETENTION_RULE", "La durée d'utilité courante a été dégelée");
 
@@ -506,3 +502,6 @@ define('_RESET_RECORD_MANAGEMENT', 'Remise à zéro du circuit d\'archivage');
 define('_RESET_RECORD_MANAGEMENT_DESC', 'Remise à zéro du circuit d\'archivage');
 
 define('_USER_SKIPPED', 'Utilisateur passé');
+
+define('_MAARCH_PARAPHEUR_STATUS_VAL', 'Validé');
+define('_MAARCH_PARAPHEUR_STATUS_REF', 'Refusé');
diff --git a/src/frontend/app/list/summarySheet/summary-sheet.component.ts b/src/frontend/app/list/summarySheet/summary-sheet.component.ts
index ef79599c333..67d7300eb3a 100644
--- a/src/frontend/app/list/summarySheet/summary-sheet.component.ts
+++ b/src/frontend/app/list/summarySheet/summary-sheet.component.ts
@@ -7,6 +7,7 @@ import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';
 import { FunctionsService } from '@service/functions.service';
 import { tap } from 'rxjs/operators';
 import { DomSanitizer } from '@angular/platform-browser';
+import {PrivilegeService} from '@service/privileges.service';
 
 @Component({
     templateUrl: 'summary-sheet.component.html',
@@ -121,17 +122,17 @@ export class SummarySheetComponent implements OnInit {
             enabled: true
         },
         {
-            id: 'trafficRecords',
-            unit: 'trafficRecords',
-            label: this.translate.instant('lang.trafficRecordSummarySheet'),
+            id: 'workflowHistory',
+            unit: 'workflowHistory',
+            label: this.translate.instant('lang.history'),
             css: 'col-md-4 text-center',
             desc: [],
             enabled: true
         },
         {
-            id: 'workflowHistory',
-            unit: 'workflowHistory',
-            label: this.translate.instant('lang.history'),
+            id: 'trafficRecords',
+            unit: 'trafficRecords',
+            label: this.translate.instant('lang.trafficRecordSummarySheet'),
             css: 'col-md-4 text-center',
             desc: [],
             enabled: true
@@ -145,6 +146,7 @@ export class SummarySheetComponent implements OnInit {
         public dialogRef: MatDialogRef<SummarySheetComponent>,
         @Inject(MAT_DIALOG_DATA) public data: any,
         public functions: FunctionsService,
+        private privilegeService: PrivilegeService,
         private sanitizer: DomSanitizer) { }
 
     ngOnInit(): void {
@@ -172,6 +174,10 @@ export class SummarySheetComponent implements OnInit {
                 }
             })
         ).subscribe();
+
+        if (!this.privilegeService.hasCurrentUserPrivilege('view_doc_history')) {
+            this.dataAvailable = this.dataAvailable.filter((item: any) => item.id !== 'workflowHistory');
+        }
     }
 
     drop(event: CdkDragDrop<string[]>) {
-- 
GitLab