mirror of
https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend
synced 2025-12-28 22:42:11 +01:00
#1503 - Anlegen von Kunden schlägt fehl
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { Component, ChangeDetectionStrategy, OnInit, OnDestroy, ChangeDetectorRef } from '@angular/core';
|
||||
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
|
||||
import { AbstractControl, FormBuilder, FormGroup, ValidationErrors, Validators } from '@angular/forms';
|
||||
import { ActivatedRoute, Router } from '@angular/router';
|
||||
import { ApplicationService } from '@core/application';
|
||||
import { BreadcrumbService } from '@core/breadcrumb';
|
||||
@@ -26,6 +26,16 @@ export class CustomerCreateOnlineComponent extends CustomerCreateComponentBase i
|
||||
shippingAddressSubscription: Subscription;
|
||||
organisationSubscription: Subscription;
|
||||
|
||||
invalidDomainEmails: string[] = [];
|
||||
emailDomainErrorValidator = (control: AbstractControl): ValidationErrors => {
|
||||
const controlValue: string = control.value || '';
|
||||
const emailDomain = this.invalidDomainEmails.find((s) => controlValue.endsWith(s));
|
||||
if (controlValue && emailDomain) {
|
||||
return { emailDomain: `Die Email-Domain ${emailDomain} ist ungültig.` };
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
constructor(
|
||||
public activatedRoute: ActivatedRoute,
|
||||
public router: Router,
|
||||
@@ -112,7 +122,11 @@ export class CustomerCreateOnlineComponent extends CustomerCreateComponentBase i
|
||||
info: fb.control(customer?.address?.info),
|
||||
}),
|
||||
communicationDetails: fb.group({
|
||||
email: fb.control(customer?.communicationDetails?.email, [Validators.required, validateEmail], [this.emailExistsValidator]),
|
||||
email: fb.control(
|
||||
customer?.communicationDetails?.email,
|
||||
[Validators.required, validateEmail, this.emailDomainErrorValidator],
|
||||
[this.emailExistsValidator]
|
||||
),
|
||||
phone: fb.control(customer?.communicationDetails?.phone, [Validators.pattern(this.PHONE_PATTERN)]),
|
||||
mobile: fb.control(customer?.communicationDetails?.mobile, [Validators.pattern(this.PHONE_PATTERN)]),
|
||||
}),
|
||||
@@ -183,14 +197,24 @@ export class CustomerCreateOnlineComponent extends CustomerCreateComponentBase i
|
||||
this.router.navigate(['/customer', response.result.id]);
|
||||
}
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
this.modal.open({
|
||||
content: UiMessageModalComponent,
|
||||
data: { title: 'Es ist ein Fehler aufgetreten', message: Object.values(error.error.invalidProperties).join(', ') },
|
||||
});
|
||||
if (error?.error?.invalidProperties?.Email) {
|
||||
this.addInvalidDomain(this.control.value.communicationDetails?.email);
|
||||
} else {
|
||||
this.modal.open({
|
||||
content: UiMessageModalComponent,
|
||||
data: { title: 'Es ist ein Fehler aufgetreten', message: Object.values(error.error.invalidProperties).join(', ') },
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
this.control.enable();
|
||||
this.control.reset(this.control.value);
|
||||
this.control.markAllAsTouched();
|
||||
this.control.updateValueAndValidity();
|
||||
}
|
||||
|
||||
addInvalidDomain(email: string) {
|
||||
const indexOfAt = email.indexOf('@');
|
||||
this.invalidDomainEmails.push(email.substring(indexOfAt));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user