From 6e739270decde019e53cc09f84d0964474bf774b Mon Sep 17 00:00:00 2001 From: Lucas Lara Date: Mon, 3 Feb 2025 11:48:50 +0100 Subject: [PATCH] refs #1436 Fix create-multiple-client's toast --- .../create-multiple-client.component.ts | 31 ++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/ogWebconsole/src/app/components/groups/shared/clients/create-multiple-client/create-multiple-client.component.ts b/ogWebconsole/src/app/components/groups/shared/clients/create-multiple-client/create-multiple-client.component.ts index 2e1617e..a2fe39e 100644 --- a/ogWebconsole/src/app/components/groups/shared/clients/create-multiple-client/create-multiple-client.component.ts +++ b/ogWebconsole/src/app/components/groups/shared/clients/create-multiple-client/create-multiple-client.component.ts @@ -125,6 +125,9 @@ export class CreateMultipleClientComponent implements OnInit{ onSubmit(): void { if (this.uploadedClients.length > 0) { + let successCount = 0; + let errorMessages: string[] = []; + this.uploadedClients.forEach(client => { const formData = { organizationalUnit: this.organizationalUnit, @@ -135,23 +138,37 @@ export class CreateMultipleClientComponent implements OnInit{ this.http.post(`${this.baseUrl}/clients`, formData).subscribe( response => { - this.toastService.success(`Cliente ${client.name} creado exitosamente`, 'Éxito'); + successCount++; + if (successCount + errorMessages.length === this.uploadedClients.length) { + this.showFinalToast(successCount, errorMessages); + } }, error => { - this.toastService.error(error.error['hydra:description'], `Error al crear el cliente ${client.name}`); + errorMessages.push(`Error al crear el cliente ${client.name}: ${error.error['hydra:description']}`); + if (successCount + errorMessages.length === this.uploadedClients.length) { + this.showFinalToast(successCount, errorMessages); + } } ); }); - this.uploadedClients = []; - this.dialogRef.close({ - success: true, - organizationalUnit: this.organizationalUnit, - }); } else { this.toastService.error('No hay clientes cargados para añadir', 'Error'); } } + showFinalToast(successCount: number, errorMessages: string[]): void { + if (successCount > 0) { + this.toastService.success(`${successCount} clientes creados exitosamente`, 'Éxito'); + } + if (errorMessages.length > 0) { + errorMessages.forEach(message => this.toastService.error(message, 'Error')); + } + this.dialogRef.close({ + success: successCount > 0, + organizationalUnit: this.organizationalUnit, + }); + } + onNoClick(): void { this.dialogRef.close(); }