From cbab4cb65b539325cd504014c37d00e3c3fce157 Mon Sep 17 00:00:00 2001
From: Damien <damien.burel@maarch.org>
Date: Mon, 17 Feb 2020 10:52:12 +0100
Subject: [PATCH] FEAT #13199 TIME 1:00 End modal redirect contact

---
 rest/index.php                                       |  2 +-
 src/core/controllers/AutoCompleteController.php      |  2 +-
 .../group/contacts-group-administration.component.ts |  2 +-
 ...list-administration-redirect-modal.component.html | 12 ++++++------
 .../list/contacts-list-administration.component.ts   |  2 +-
 src/frontend/app/profile.component.ts                |  2 +-
 src/frontend/lang/lang-en.ts                         |  4 ++++
 src/frontend/lang/lang-fr.ts                         |  4 ++++
 src/frontend/lang/lang-nl.ts                         |  4 ++++
 test/unitTests/core/AutocompleteControllerTest.php   |  2 +-
 10 files changed, 24 insertions(+), 12 deletions(-)

diff --git a/rest/index.php b/rest/index.php
index fbd7d71ae3c..b8f967d7a68 100755
--- a/rest/index.php
+++ b/rest/index.php
@@ -87,7 +87,7 @@ $app->get('/attachmentsTypes', \Attachment\controllers\AttachmentController::cla
 $app->get('/autocomplete/users', \SrcCore\controllers\AutoCompleteController::class . ':getUsers');
 $app->get('/autocomplete/maarchParapheurUsers', \SrcCore\controllers\AutoCompleteController::class . ':getMaarchParapheurUsers');
 $app->get('/autocomplete/correspondents', \SrcCore\controllers\AutoCompleteController::class . ':getCorrespondents');
-$app->get('/autocomplete/contacts/groups', \SrcCore\controllers\AutoCompleteController::class . ':getContactsForGroups');
+$app->get('/autocomplete/contacts', \SrcCore\controllers\AutoCompleteController::class . ':getContacts');
 $app->get('/autocomplete/contacts/company', \SrcCore\controllers\AutoCompleteController::class . ':getContactsCompany');
 $app->get('/autocomplete/users/administration', \SrcCore\controllers\AutoCompleteController::class . ':getUsersForAdministration');
 $app->get('/autocomplete/users/circuit', \SrcCore\controllers\AutoCompleteController::class . ':getUsersForCircuit');
diff --git a/src/core/controllers/AutoCompleteController.php b/src/core/controllers/AutoCompleteController.php
index 676a1e6d457..973deb0aafd 100755
--- a/src/core/controllers/AutoCompleteController.php
+++ b/src/core/controllers/AutoCompleteController.php
@@ -543,7 +543,7 @@ class AutoCompleteController
         return $response->withJson($data);
     }
 
-    public static function getContactsForGroups(Request $request, Response $response)
+    public static function getContacts(Request $request, Response $response)
     {
         $data = $request->getQueryParams();
 
diff --git a/src/frontend/app/administration/contact/group/contacts-group-administration.component.ts b/src/frontend/app/administration/contact/group/contacts-group-administration.component.ts
index 56cbd9fab56..4f98ec3f669 100644
--- a/src/frontend/app/administration/contact/group/contacts-group-administration.component.ts
+++ b/src/frontend/app/administration/contact/group/contacts-group-administration.component.ts
@@ -110,7 +110,7 @@ export class ContactsGroupAdministrationComponent implements OnInit {
             debounceTime(500),
             filter(value => value.length > 2),
             distinctUntilChanged(),
-            switchMap(data => this.http.get('../../rest/autocomplete/contacts/groups', { params: { "search": data } }))
+            switchMap(data => this.http.get('../../rest/autocomplete/contacts', { params: { "search": data } }))
         ).subscribe((response: any) => {
             this.searchResult = response;
             this.dataSource = new MatTableDataSource(this.searchResult);
diff --git a/src/frontend/app/administration/contact/list/contacts-list-administration-redirect-modal.component.html b/src/frontend/app/administration/contact/list/contacts-list-administration-redirect-modal.component.html
index 90b4cd45af7..6e103ebf3e8 100644
--- a/src/frontend/app/administration/contact/list/contacts-list-administration-redirect-modal.component.html
+++ b/src/frontend/app/administration/contact/list/contacts-list-administration-redirect-modal.component.html
@@ -1,4 +1,4 @@
-<h1 mat-dialog-title>{{lang.redirects}}</h1>
+<h1 mat-dialog-title>{{lang.contactsReassign}}</h1>
 <mat-dialog-content style="overflow:inherit;">
     <form #redirectConfForm="ngForm">
         <div class="modal-body">
@@ -9,23 +9,23 @@
                 <mat-radio-group id="processMode" name="processMode" style="display: inline-flex;flex-direction: column;" [(ngModel)]="this.processMode"
                     color="primary">
                     <mat-radio-button value="delete" color="primary">
-                        {{lang.delete}}
+                        {{lang.deleteContactwithtoutReassign}}
                     </mat-radio-button>
                     <mat-radio-button value="reaffect" color="primary">
                         {{lang.reaffectContactRedirect}}
                     </mat-radio-button>
                 </mat-radio-group>
-                <plugin-autocomplete *ngIf="this.processMode == 'reaffect'" [labelPlaceholder]="lang.contactReplacement" [labelList]="lang.availableContacts" [routeDatas]="['/rest/autocomplete/correspondents?noUsers=true&noEntities=true&noContactsGroups=true']" [targetSearchKey]="'firstname'" (triggerEvent)="setRedirectUser($event)" singleMode required></plugin-autocomplete>
+                <plugin-autocomplete *ngIf="this.processMode == 'reaffect'" [labelPlaceholder]="lang.contactReplacement" [labelList]="lang.availableContacts" [routeDatas]="['/rest/autocomplete/contacts']" [targetSearchKey]="'contact'" (triggerEvent)="setRedirectUser($event)" singleMode required></plugin-autocomplete>
 
                 <div *ngIf="this.processMode" class="alert-message alert-message-info" role="alert" style="max-width: inherit;">
-                    <span *ngIf="this.processMode == 'delete'"><em>{{lang.delete}}</em></span>
-                    <span *ngIf="this.processMode == 'reaffect'"><em>{{lang.reaffect}}</em></span>
+                    <span *ngIf="this.processMode == 'delete'"><em>{{lang.deleteContactInformations}}</em></span>
+                    <span *ngIf="this.processMode == 'reaffect'"><em>{{lang.reaffectContactInformations}}</em></span>
                 </div>
             </div>
         </div>
         <mat-dialog-actions>
             <button mat-raised-button color="primary" type="submit" [disabled]="!this.redirectContact && this.processMode == 'reaffect'"
-                (click)="dialogRef.close({contactId:this.redirectContact, processMode:this.processMode})">{{lang.validate}}</button>
+                (click)="dialogRef.close({contactId:this.redirectContact, processMode:this.processMode})">{{lang.delete}}</button>
         </mat-dialog-actions>
     </form>
 </mat-dialog-content>
diff --git a/src/frontend/app/administration/contact/list/contacts-list-administration.component.ts b/src/frontend/app/administration/contact/list/contacts-list-administration.component.ts
index 45c045cb4ff..7fa23144154 100644
--- a/src/frontend/app/administration/contact/list/contacts-list-administration.component.ts
+++ b/src/frontend/app/administration/contact/list/contacts-list-administration.component.ts
@@ -146,7 +146,7 @@ export class ContactsListAdministrationComponent implements OnInit {
             this.dialogRef.afterClosed().subscribe((result: any) => {
                 var queryparams = '';
                 if (result.processMode == 'reaffect') {
-                    queryparams = '?contact=' + result.contactId;
+                    queryparams = '?redirect=' + result.contactId;
                 }
                 this.http.request('DELETE', `../../rest/contacts/${contact.id}${queryparams}`)
                     .subscribe(() => {
diff --git a/src/frontend/app/profile.component.ts b/src/frontend/app/profile.component.ts
index 621f7b29e8c..479ee1cabd6 100755
--- a/src/frontend/app/profile.component.ts
+++ b/src/frontend/app/profile.component.ts
@@ -178,7 +178,7 @@ export class ProfileComponent implements OnInit {
             debounceTime(500),
             filter(value => value.length > 2),
             distinctUntilChanged(),
-            switchMap(data => this.http.get('../../rest/autocomplete/contacts/groups', { params: { "search": data } }))
+            switchMap(data => this.http.get('../../rest/autocomplete/contacts', { params: { "search": data } }))
         ).subscribe((response: any) => {
             this.searchResult = response;
             this.dataSourceContactsListAutocomplete = new MatTableDataSource(this.searchResult);
diff --git a/src/frontend/lang/lang-en.ts b/src/frontend/lang/lang-en.ts
index 6bd3d3603a3..f5cfa96a8d3 100755
--- a/src/frontend/lang/lang-en.ts
+++ b/src/frontend/lang/lang-en.ts
@@ -1493,10 +1493,14 @@ export const LANG_EN = {
     "cannotCloseMails" : "Some mails cannot be closed",
     "followingFieldsAreEmpty" : "Following fields are empty",
     "checkEmptyFields" : "Requisite fields to make this action",
+    "contactsReassign" : "Contacts reassign",
     "contactLinkedToMails" : "Contact linked to mails",
     "reaffect" : "Reaffect",
     "reaffectContactRedirect" : "Reaffect to a contact",
     "contactReplacement" : "Replacement contact",
+    "deleteContactwithtoutReassign" : "Delete contact without reassign",
+    "deleteContactInformations" : "Links between contact and resources, attachments or acknowledgement receipts will be deleted.",
+    "reaffectContactInformations" : "Links between contact and resources, attachments or acknowledgement receipts will be reassigned to choosen contact.",
     "availableContacts" : "Available contact",
     "sent" :  "Sent",
     "notSent" :  "Not sent",
diff --git a/src/frontend/lang/lang-fr.ts b/src/frontend/lang/lang-fr.ts
index c8b72172793..3d78c6e924b 100755
--- a/src/frontend/lang/lang-fr.ts
+++ b/src/frontend/lang/lang-fr.ts
@@ -1534,10 +1534,14 @@ export const LANG_FR = {
     "cannotCloseMails" : "Certains courriers ne peuvent pas être clôturés",
     "followingFieldsAreEmpty" : "Les champs suivants sont vides",
     "checkEmptyFields" : "Champs requis pour effectuer cette action",
+    "contactsReassign" : "Réaffectation de contacts",
     "contactLinkedToMails" : "Ce contact est lié à des courriers",
     "reaffect" : "Réaffecter",
     "reaffectContactRedirect" : "Réaffecter à un contact",
     "contactReplacement" : "Contact remplaçant",
+    "deleteContactwithtoutReassign" : "Supprimer le contact sans le remplacer",
+    "deleteContactInformations" : "Les différents liens entre le contact et les courriers, pièce-jointes ou accusés de réceptions seront supprimés.",
+    "reaffectContactInformations" : "Les différents liens entre le contact et les courriers, pièce-jointes ou accusés de réceptions seront réaffecter au nouveau contact choisi.",
     "availableContacts" : "Contact(s) disponible(s)",
     "sent" :  "Envoyé",
     "notSent" :  "Non envoyé",
diff --git a/src/frontend/lang/lang-nl.ts b/src/frontend/lang/lang-nl.ts
index 0ac9ed47c4d..b175f7a32b3 100755
--- a/src/frontend/lang/lang-nl.ts
+++ b/src/frontend/lang/lang-nl.ts
@@ -1518,10 +1518,14 @@ export const LANG_NL = {
     "cannotCloseMails" : "Some mails cannot be closed", //_TO_TRANSLATE
     "followingFieldsAreEmpty" : "Following fields are empty", //_TO_TRANSLATE
     "checkEmptyFields" : "Requisite fields to make this action", //_TO_TRANSLATE
+    "contactsReassign" : "Contacts reassign",//_TO_TRANSLATE
     "contactLinkedToMails" : "Contact linked to mails", //_TO_TRANSLATE
     "reaffect" : "Reaffect", //_TO_TRANSLATE
     "reaffectContactRedirect" : "Reaffect to a contact", //_TO_TRANSLATE
     "contactReplacement" : "Replacement contact", //_TO_TRANSLATE
+    "deleteContactwithtoutReassign" : "Delete contact without reassign", //_TO_TRANSLATE
+    "deleteContactInformations" : "Links between contact and resources, attachments or acknowledgement receipts will be deleted.",//_TO_TRANSLATE
+    "reaffectContactInformations" : "Links between contact and resources, attachments or acknowledgement receipts will be reassigned to choosen contact.",//_TO_TRANSLATE
     "availableContacts" : "Available contact", //_TO_TRANSLATE
     "sent" :  "Sent", //_TO_TRANSLATE
     "notSent" :  "Not sent", //_TO_TRANSLATE
diff --git a/test/unitTests/core/AutocompleteControllerTest.php b/test/unitTests/core/AutocompleteControllerTest.php
index 4e11063f73d..da13ac2aa20 100755
--- a/test/unitTests/core/AutocompleteControllerTest.php
+++ b/test/unitTests/core/AutocompleteControllerTest.php
@@ -27,7 +27,7 @@ class AutocompleteControllerTest extends TestCase
         ];
         $fullRequest = $request->withQueryParams($aArgs);
 
-        $response     = $autocompleteController->getContactsForGroups($fullRequest, new \Slim\Http\Response());
+        $response     = $autocompleteController->getContacts($fullRequest, new \Slim\Http\Response());
         $responseBody = json_decode((string)$response->getBody());
 
         $this->assertInternalType('array', $responseBody);
-- 
GitLab