From 91be5eb3fe6f04f40169f4a821636f516b1096e8 Mon Sep 17 00:00:00 2001
From: Alex ORLUC <alex.orluc@maarch.org>
Date: Thu, 2 Jan 2020 10:26:55 +0100
Subject: [PATCH] FEAT #12635 TIME 0:20 add communication mean field

---
 .../page/form/contacts-form.component.html    |  7 +++--
 .../page/form/contacts-form.component.ts      | 28 +++++++++++++++----
 src/frontend/lang/lang-fr.ts                  |  7 ++++-
 3 files changed, 34 insertions(+), 8 deletions(-)

diff --git a/src/frontend/app/administration/contact/page/form/contacts-form.component.html b/src/frontend/app/administration/contact/page/form/contacts-form.component.html
index 13f59bd5c25..d486a1ba490 100644
--- a/src/frontend/app/administration/contact/page/form/contacts-form.component.html
+++ b/src/frontend/app/administration/contact/page/form/contacts-form.component.html
@@ -72,6 +72,8 @@
                                     <mat-form-field>
                                         <input matInput [formControl]="field.control" [placeholder]="field.label"
                                             (blur)="checkCompany(field);checkFilling();" [required]="field.required">
+                                        <mat-hint *ngIf="!isEmptyValue(field.desc)" align="end" [innerHTML]="field.desc">
+                                        </mat-hint>
                                         <mat-hint *ngIf="companyFound !== null && field.id === 'company'" align="end">
                                             {{lang.contactsParameters_company}} <b>{{companyFound.company}}</b>
                                             {{lang.found}}
@@ -81,7 +83,8 @@
                                             {{lang.toCopyAddress}}</mat-hint>
                                         <mat-error *ngIf="field.control.status!=='VALID'  && field.control.touched">
                                             {{getErrorMsg(field.control.errors)}}</mat-error>
-                                        <mat-icon style="height: auto;" *ngIf="field.filling" matSuffix [title]="lang.targetFillingField"
+                                        <mat-icon style="height: auto;" *ngIf="field.filling" matSuffix
+                                            [title]="lang.targetFillingField"
                                             class="fas fa-circle rate_{{fillingRate.class}}"></mat-icon>
                                     </mat-form-field>
                                 </ng-container>
@@ -217,7 +220,7 @@
             </div>
         </ng-container>
     </div>
-    <div style="text-align:center;">
+    <div style="text-align:center;padding-top: 10px;">
         <button mat-raised-button color="default" type="button"
             [matMenuTriggerFor]="menu">{{lang.moreInfos}}...</button>
 
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 f5768d8af7c..85135358f54 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
@@ -11,6 +11,8 @@ import { startWith, switchMap, map, catchError, filter, exhaustMap, tap, debounc
 import { FormControl, Validators, ValidatorFn, FormGroup, FormBuilder } from '@angular/forms';
 import { ActivatedRoute, Router } from '@angular/router';
 
+declare var angularGlobals: any;
+
 @Component({
     selector: 'app-contact-form',
     templateUrl: "contacts-form.component.html",
@@ -21,6 +23,7 @@ export class ContactsFormComponent implements OnInit {
 
     @ViewChild('snav', { static: true }) public sidenavLeft: MatSidenav;
     @ViewChild('snav2', { static: true }) public sidenavRight: MatSidenav;
+    
 
     lang: any = LANG;
     loading: boolean = false;
@@ -30,6 +33,8 @@ export class ContactsFormComponent implements OnInit {
 
     @Output() onSubmitEvent = new EventEmitter<number>();
 
+    maarch2GecUrl: string = `https://docs.maarch.org/gitbook/html/MaarchCourrier/${angularGlobals.applicationVersion.split('.')[0] + '.' + angularGlobals.applicationVersion.split('.')[1]}/guat/guat_exploitation/maarch2gec.html`;
+
     contactUnit = [
         {
             id: 'mainInfo',
@@ -210,6 +215,18 @@ export class ContactsFormComponent implements OnInit {
             display: false,
             filling: false,
             values: []
+        },
+        {
+            id: 'communicationMeans',
+            unit: 'complement',
+            label: this.lang.communicationMean,
+            desc: `${this.lang.communicationMeanDesc} (${this.lang.see} <a href="${this.maarch2GecUrl}" target="_blank">MAARCH2GEC</a>)`,
+            type: 'string',
+            control: new FormControl(),
+            required: false,
+            display: false,
+            filling: false,
+            values: []
         }
     ];
 
@@ -263,7 +280,7 @@ export class ContactsFormComponent implements OnInit {
                 tap((data: any) => {
                     this.initCustomElementForm(data);
                     this.initAutocompleteAddressBan();
-                    
+
                 }),
                 finalize(() => this.loading = false),
                 catchError((err: any) => {
@@ -282,7 +299,7 @@ export class ContactsFormComponent implements OnInit {
                 tap((data: any) => {
                     this.fillingParameters = data.contactsFilling;
                     this.initElemForm(data);
-                    
+
                 }),
                 exhaustMap(() => this.http.get("../../rest/civilities")),
                 tap((data: any) => {
@@ -336,6 +353,7 @@ export class ContactsFormComponent implements OnInit {
                 targetField = this.contactForm.filter(contact => contact.id === field.id)[0];
             }
             if (targetField !== undefined) {
+
                 if ((element.filling && this.creationMode) || element.mandatory) {
                     targetField.display = true;
                 }
@@ -382,10 +400,10 @@ export class ContactsFormComponent implements OnInit {
             valArr = [];
             field = this.contactForm.filter(contact => contact.id === 'customField_' + element.id)[0];
 
-            if (field !== undefined) {    
+            if (field !== undefined) {
                 field.label = element.label;
                 field.type = element.type;
-                field.values = element.values.map((value: any) => {return {id: value, label: value}});
+                field.values = element.values.map((value: any) => { return { id: value, label: value } });
                 if (element.type === 'integer') {
                     valArr.push(Validators.pattern(/^[+-]?([0-9]+([.][0-9]*)?|[.][0-9]+)$/));
                     field.control.setValidators(valArr);
@@ -535,7 +553,7 @@ export class ContactsFormComponent implements OnInit {
 
     isEmptyValue(value: string) {
 
-        if (value === null) {
+        if (value === null || value === undefined) {
             return true;
 
         } else if (Array.isArray(value)) {
diff --git a/src/frontend/lang/lang-fr.ts b/src/frontend/lang/lang-fr.ts
index 08ec9da4b0e..90ce5c1acfb 100755
--- a/src/frontend/lang/lang-fr.ts
+++ b/src/frontend/lang/lang-fr.ts
@@ -1,3 +1,5 @@
+declare var angularGlobals: any;
+
 export const LANG_FR = {
     "actives"                               : "Actif(s)",
     "ARsimple"                              : "AR simple",
@@ -1400,10 +1402,13 @@ export const LANG_FR = {
     "here": "ici",
     "toCopyAddress": "pour copier son adresse",
     "badFormat": "Format incorrect",
-    "contactFilledTo": "Contact rempli à",
+    "contactFilledTo": "Complétude à",
     "targetFillingField": "Champ cible de complétude",
     "arGenWithModelMessage" : "Les fiches de liaisons seront générées avec les champs définis dans le model d'enregistrement du courrier.",
     "createContact": "Créer un contact",
     "diffusionListUpdated": "Liste de diffusion mise à jour",
     "saveModifications": "Sauvegarder les modifications",
+    "communicationMean": "Moyen de communication",
+    "communicationMeanDesc": "Lie un contact à une autre instance de maarch",
+    "see": "voir",
 };
-- 
GitLab