From 0e475ec594b42d16536fb880eebd0222be9e6e40 Mon Sep 17 00:00:00 2001
From: "florian.azizian" <florian.azizian@maarch.org>
Date: Wed, 29 Jan 2020 22:10:47 +0100
Subject: [PATCH] FEAT #12622 TIME 0:30 autocomplete M2M ldap annuary + improve
 display field

---
 .../controllers/AnnuaryController.php           |  4 ++--
 src/core/controllers/AutoCompleteController.php |  4 ++++
 .../page/form/contacts-form.component.ts        | 17 ++++++++++++++++-
 3 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/src/app/external/messageExchange/controllers/AnnuaryController.php b/src/app/external/messageExchange/controllers/AnnuaryController.php
index 96670a48001..c4159b195db 100644
--- a/src/app/external/messageExchange/controllers/AnnuaryController.php
+++ b/src/app/external/messageExchange/controllers/AnnuaryController.php
@@ -175,10 +175,10 @@ class AnnuaryController
         $loadedXml = CoreConfigModel::getXmlLoaded(['path' => 'apps/maarch_entreprise/xml/m2m_config.xml']);
 
         if (!$loadedXml) {
-            return ['success' => 'M2M is disabled'];
+            return ['success' => _M2M_ANNUARY_IS_NOT_SET];
         }
         if (empty($loadedXml->annuaries) || $loadedXml->annuaries->enabled == 'false') {
-            return ['success' => 'Annuary is disabled'];
+            return ['success' => _NO_M2M_ANNUARY_AVAILABLE];
         }
         $organization = (string)$loadedXml->annuaries->organization;
         if (empty($organization)) {
diff --git a/src/core/controllers/AutoCompleteController.php b/src/core/controllers/AutoCompleteController.php
index ba9534d5e2e..a8e514970c7 100755
--- a/src/core/controllers/AutoCompleteController.php
+++ b/src/core/controllers/AutoCompleteController.php
@@ -642,6 +642,8 @@ class AutoCompleteController
         if (!isset($control['annuaries'])) {
             if (isset($control['errors'])) {
                 return $response->withStatus(400)->withJson(['errors' => $control['errors']]);
+            } elseif (isset($control['success'])) {
+                return $response->withStatus(400)->withJson(['errors' => $control['success']]);
             }
         }
 
@@ -702,6 +704,8 @@ class AutoCompleteController
         if (!isset($control['annuaries'])) {
             if (isset($control['errors'])) {
                 return $response->withStatus(400)->withJson(['errors' => $control['errors']]);
+            } elseif (isset($control['success'])) {
+                return $response->withStatus(400)->withJson(['errors' => $control['success']]);
             }
         }
 
diff --git a/src/frontend/app/administration/contact/page/form/contacts-form.component.ts b/src/frontend/app/administration/contact/page/form/contacts-form.component.ts
index dac7fea588a..dc74988a7ff 100644
--- a/src/frontend/app/administration/contact/page/form/contacts-form.component.ts
+++ b/src/frontend/app/administration/contact/page/form/contacts-form.component.ts
@@ -763,6 +763,12 @@ export class ContactsFormComponent implements OnInit {
     removeField(field: any) {
         field.display = !field.display;
         field.control.reset();
+        if (field.id == 'externalId_m2m' && !field.display) {
+            let indexFieldAnnuaryId = this.contactForm.map(field => field.id).indexOf('externalId_m2m_annuary_id');
+            if (indexFieldAnnuaryId > -1) {
+                this.contactForm[indexFieldAnnuaryId].display = false;
+            }
+        }
         this.checkFilling();
     }
 
@@ -770,7 +776,6 @@ export class ContactsFormComponent implements OnInit {
         this.communicationMeanInfo = this.lang.autocompleteInfo;
         this.communicationMeanResult = [];
         let indexFieldCommunicationMeans = this.contactForm.map(field => field.id).indexOf('communicationMeans');
-        let indexFieldCompany = this.contactForm.map(field => field.id).indexOf('company');
         this.contactForm[indexFieldCommunicationMeans].control.valueChanges
             .pipe(
                 debounceTime(300),
@@ -787,6 +792,11 @@ export class ContactsFormComponent implements OnInit {
                     this.communicationMeanResult = data;
                     this.communicationMeanFilteredResult = of(this.communicationMeanResult);
                     this.communicationMeanLoading = false;
+                }),
+                catchError((err: any) => {
+                    this.communicationMeanInfo = err.error.errors;
+                    this.communicationMeanLoading = false;
+                    return of(false);
                 })
             ).subscribe();
     }
@@ -823,6 +833,11 @@ export class ContactsFormComponent implements OnInit {
                     this.externalId_m2mResult = data;
                     this.externalId_m2mFilteredResult = of(this.externalId_m2mResult);
                     this.externalId_m2mLoading = false;
+                }),
+                catchError((err: any) => {
+                    this.externalId_m2mInfo = err.error.errors;
+                    this.externalId_m2mLoading = false;
+                    return of(false);
                 })
             ).subscribe();
     }
-- 
GitLab