From 7d3dbc3e46e64bb4bdd24f51e414cdb01e183b41 Mon Sep 17 00:00:00 2001 From: FrancescoMolinaro Date: Tue, 2 Jan 2024 10:26:27 +0100 Subject: [PATCH] add validation message for ldnUrl already associated --- .../ldn-service-form.component.html | 9 ++++++-- .../ldn-service-form.component.ts | 23 ++++++++++++++++++- src/assets/i18n/en.json5 | 1 + 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.html b/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.html index 16fed56ca4..1cf5a1d3f2 100644 --- a/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.html +++ b/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.html @@ -57,8 +57,13 @@ id="ldnUrl" name="ldnUrl" type="text"> -
- {{ 'ldn-new-service.form.error.ldnurl' | translate }} +
+
+ {{ 'ldn-new-service.form.error.ldnurl' | translate }} +
+
+ {{ 'ldn-new-service.form.error.ldnurl.ldnUrlAlreadyAssociated' | translate }} +
diff --git a/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.ts b/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.ts index 60206b5b00..a6c0e23656 100644 --- a/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.ts +++ b/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.ts @@ -9,7 +9,12 @@ import { TemplateRef, ViewChild } from '@angular/core'; -import {FormArray, FormBuilder, FormGroup, Validators} from '@angular/forms'; +import { + FormArray, + FormBuilder, + FormGroup, + Validators +} from '@angular/forms'; import {LDN_SERVICE} from '../ldn-services-model/ldn-service.resource-type'; import {ActivatedRoute, Router} from '@angular/router'; import {LdnServicesService} from '../ldn-services-data/ldn-services-data.service'; @@ -198,6 +203,9 @@ export class LdnServiceFormComponent implements OnInit, OnDestroy { this.sendBack(); this.closeModal(); } else { + if (!this.formModel.errors) { + this.showLdnUrlError(); + } this.notificationService.error(this.translateService.get('ldn-service-notification.created.failure.title'), this.translateService.get('ldn-service-notification.created.failure.body')); this.closeModal(); @@ -486,6 +494,9 @@ export class LdnServiceFormComponent implements OnInit, OnDestroy { this.notificationService.success(this.translateService.get('admin.registries.services-formats.modify.success.head'), this.translateService.get('admin.registries.services-formats.modify.success.content')); } else { + if (!this.formModel.errors) { + this.showLdnUrlError(); + } this.notificationService.error(this.translateService.get('admin.registries.services-formats.modify.failure.head'), this.translateService.get('admin.registries.services-formats.modify.failure.content')); this.closeModal(); @@ -708,4 +719,14 @@ export class LdnServiceFormComponent implements OnInit, OnDestroy { automatic: '', }); } + + + /** + * Show ldnUrl error in case of unprocessable entity and provided value + */ + private showLdnUrlError(): void { + const control = this.formModel.controls.ldnUrl; + const controlErrors = control.errors || {}; + control.setErrors({...controlErrors, ldnUrlAlreadyAssociated: true }); + } } diff --git a/src/assets/i18n/en.json5 b/src/assets/i18n/en.json5 index f7a9e2c072..e746a10bd6 100644 --- a/src/assets/i18n/en.json5 +++ b/src/assets/i18n/en.json5 @@ -998,6 +998,7 @@ "ldn-new-service.form.error.name": "Name is required", "ldn-new-service.form.error.url": "URL is required", "ldn-new-service.form.error.ldnurl": "LDN URL is required", + "ldn-new-service.form.error.ldnurl.ldnUrlAlreadyAssociated": "This LDN Inbox URL is associated to another registered service. Please enter a different LDN Inbox URL", "ldn-new-service.form.error.patterns": "At least a pattern is required", "ldn-new-service.form.error.score": "Please enter a valid score (between 0 and 1). Use the “.” as decimal separator",