diff --git a/src/frontend/app/administration/contact/contact-duplicate/manage-duplicate/manage-duplicate.component.html b/src/frontend/app/administration/contact/contact-duplicate/manage-duplicate/manage-duplicate.component.html index ee381f54571874c319e01ec2df9332288f67c9ad..f415af9d3dcf0aa51853a94de44db049b4cb9c91 100644 --- a/src/frontend/app/administration/contact/contact-duplicate/manage-duplicate/manage-duplicate.component.html +++ b/src/frontend/app/administration/contact/contact-duplicate/manage-duplicate/manage-duplicate.component.html @@ -7,7 +7,7 @@ <span class="divider-modal"></span> <div mat-dialog-actions class="actions"> <button mat-raised-button mat-button color="primary" [disabled]="contactSelected===null" - (click)="onSubmit()">Fusionner</button> + (click)="onSubmit()">{{lang.merge}}</button> <button mat-raised-button mat-button [mat-dialog-close]="">{{lang.cancel}}</button> </div> </div> diff --git a/src/frontend/app/administration/contact/contact-duplicate/manage-duplicate/manage-duplicate.component.ts b/src/frontend/app/administration/contact/contact-duplicate/manage-duplicate/manage-duplicate.component.ts index 11bbf8aa042a41dd73784f055f91e83850b21552..0c68d7cf0a1b044fe0c972928621ab7c28ae631a 100644 --- a/src/frontend/app/administration/contact/contact-duplicate/manage-duplicate/manage-duplicate.component.ts +++ b/src/frontend/app/administration/contact/contact-duplicate/manage-duplicate/manage-duplicate.component.ts @@ -5,6 +5,9 @@ import { HttpClient } from '@angular/common/http'; import { FunctionsService } from '../../../../../service/functions.service'; import { ContactDetailComponent } from '../../../../contact/contact-detail/contact-detail.component'; import { LANG } from '../../../../translate.component'; +import { tap, catchError } from 'rxjs/operators'; +import { of } from 'rxjs/internal/observable/of'; +import { NotificationService } from '../../../../notification.service'; @Component({ selector: 'app-manage-duplicate', @@ -21,36 +24,20 @@ export class ManageDuplicateComponent implements OnInit { constructor( public http: HttpClient, + private notify: NotificationService, @Inject(MAT_DIALOG_DATA) public data: any, public dialogRef: MatDialogRef<ManageDuplicateComponent>, public headerService: HeaderService, private functionsService: FunctionsService) { } - ngOnInit(): void { - console.log(this.data); - - /*this.data.duplicate = [ - { - id: 15, - type: 'contact' - }, - { - id: 16, - type: 'contact' - }, - { - id: 17, - type: 'contact' - } - ];*/ - } + ngOnInit(): void { } mergeContact(contact: any, index: number) { this.contactSelected = index; - this.data.duplicate.forEach((contact: any, indexContact: number) => { + this.data.duplicate.forEach((contactItem: any, indexContact: number) => { Object.keys(this.appContactDetail.toArray()[indexContact].getContactInfo()).forEach(element => { if (this.functionsService.empty(this.appContactDetail.toArray()[index].getContactInfo()[element]) && this.appContactDetail.toArray()[index].getContactInfo()[element] !== this.appContactDetail.toArray()[indexContact].getContactInfo()[element]) { this.appContactDetail.toArray()[index].setContactInfo(element, this.appContactDetail.toArray()[indexContact].getContactInfo()[element]); @@ -68,6 +55,20 @@ export class ManageDuplicateComponent implements OnInit { } onSubmit() { - this.dialogRef.close('success'); + const masterContact: number = this.data.duplicate.filter((contact: any, index: number) => index === this.contactSelected).map((contact: any) => contact.id)[0]; + const slaveContacts: number[] = this.data.duplicate.filter((contact: any, index: number) => index !== this.contactSelected).map((contact: any) => contact.id); + + console.log(masterContact); + console.log(slaveContacts); + + this.http.post('../rest/contacts/merged', { master : masterContact, saves : slaveContacts}).pipe( + tap(() => { + this.dialogRef.close('success'); + }), + catchError((err: any) => { + this.notify.handleSoftErrors(err); + return of(false); + }) + ).subscribe(); } } diff --git a/src/frontend/lang/lang-en.ts b/src/frontend/lang/lang-en.ts index dc1d64b7eb2a3416a3497d697f8024acbaf50259..d5aaaeb0527627f929b411d587a9d73140497746 100755 --- a/src/frontend/lang/lang-en.ts +++ b/src/frontend/lang/lang-en.ts @@ -1699,4 +1699,5 @@ export const LANG_EN = { "launchSearch": "Launch search", "duplicatesContactDisplayed": "{0} duplicates ({1} displayed)", "duplicatesContactsAdmin": "Manage contacts duplicates", + "merge": "Merge", }; diff --git a/src/frontend/lang/lang-fr.ts b/src/frontend/lang/lang-fr.ts index aff4b4058c0b3f2d394ed47f99a95e2ed0749112..30ae01edccc1174f90eb441ccfbd807e083c26e2 100755 --- a/src/frontend/lang/lang-fr.ts +++ b/src/frontend/lang/lang-fr.ts @@ -1701,4 +1701,5 @@ export const LANG_FR = { "launchSearch": "Lancer la recherche", "duplicatesContactDisplayed": "{0} doulons ({1} affichés)", "duplicatesContactsAdmin": "Gérer les doublons de contacts", + "merge": "Fusionner", }; diff --git a/src/frontend/lang/lang-nl.ts b/src/frontend/lang/lang-nl.ts index 92b50f081d4e48e97e48434710c2ec3cc1a72729..bf5abee197ee69b957ffca8e4d3bc2679e592489 100755 --- a/src/frontend/lang/lang-nl.ts +++ b/src/frontend/lang/lang-nl.ts @@ -1683,4 +1683,5 @@ export const LANG_NL = { "launchSearch": "Launch search", //_TO_TRANSLATE "duplicatesContactDisplayed": "{0} duplicates ({1} displayed)", //_TO_TRANSLATE "duplicatesContactsAdmin": "Manage contacts duplicates", //_TO_TRANSLATE + "merge": "Merge", //_TO_TRANSLATE };