From 7b231589fa12426b0b0d51ee321eae15a36f43c1 Mon Sep 17 00:00:00 2001 From: Chneemann Date: Sat, 18 May 2024 10:32:08 +0200 Subject: [PATCH] update form validation --- .../contact-form/contact-form.component.html | 40 ++++++++++-------- .../contact-form/contact-form.component.ts | 41 +++++++++++++------ src/assets/i18n/de.json | 6 ++- src/assets/i18n/en.json | 6 ++- 4 files changed, 61 insertions(+), 32 deletions(-) diff --git a/src/app/components/contacts/contact-edit-new/contact-form/contact-form.component.html b/src/app/components/contacts/contact-edit-new/contact-form/contact-form.component.html index cc577b4..8bfcea2 100644 --- a/src/app/components/contacts/contact-edit-new/contact-form/contact-form.component.html +++ b/src/app/components/contacts/contact-edit-new/contact-form/contact-form.component.html @@ -16,7 +16,7 @@ placeholder="{{ contactData.firstName !== '' ? contactData.firstName - : ('contactDalogForm.firstName' | translate) + : ('contactDialogForm.firstName' | translate) }}" [(ngModel)]="contactData.firstName" autocomplete="off" @@ -25,7 +25,7 @@ @if (sharedService.isContactViewMedia) {
@if (!firstName.valid && firstName.touched) { -

{{ "contactDalogForm.invalidFirstName" | translate }}

+

{{ "contactDialogForm.invalidFirstName" | translate }}

}
} @@ -38,7 +38,7 @@ placeholder="{{ contactData.lastName !== '' ? contactData.lastName - : ('contactDalogForm.lastName' | translate) + : ('contactDialogForm.lastName' | translate) }}" [(ngModel)]="contactData.lastName" autocomplete="off" @@ -48,18 +48,18 @@ @if (sharedService.isContactViewMedia) {
@if (!lastName.valid && lastName.touched) { -

{{ "contactDalogForm.invalidLastName" | translate }}

+

{{ "contactDialogForm.invalidLastName" | translate }}

}
} @if (!sharedService.isContactViewMedia) {
@if ((!firstName.valid && firstName.touched) && (!lastName.valid && lastName.touched)) { -

{{ "contactDalogForm.invalidName" | translate }}

+

{{ "contactDialogForm.invalidName" | translate }}

} @else { @if (!firstName.valid && firstName.touched) { -

{{ "contactDalogForm.invalidFirstName" | translate }}

+

{{ "contactDialogForm.invalidFirstName" | translate }}

} @else { @if (!lastName.valid && lastName.touched) { -

{{ "contactDalogForm.invalidLastName" | translate }}

+

{{ "contactDialogForm.invalidLastName" | translate }}

} } }
} @@ -71,16 +71,22 @@ placeholder="{{ contactData.email !== '' ? contactData.email - : ('contactDalogForm.email' | translate) + : ('contactDialogForm.email' | translate) }}" [(ngModel)]="contactData.email" autocomplete="off" required />
- @if (!email.valid && email.touched) { -

{{ "contactDalogForm.invalidEmail" | translate }}

- } + @if(!email.valid && email.touched && + !checkIfUserEmailIsValid(contactData.email)) { +

{{ "contactDialogForm.invalidMail0" | translate }}

+ } @else { @if (email.touched && + !checkIfUserEmailIsValid(contactData.email)) { +

{{ "contactDialogForm.invalidMail1" | translate }}

+ } @else { @if (existEmailonServer(contactData.email).length > 0) { +

{{ "regiscontactDialogFormter.invalidMail2" | translate }}

+ } } }
@if (!phone.valid && phone.touched) { -

{{ "contactDalogForm.invalidPhone" | translate }}

+

{{ "contactDialogForm.invalidPhone" | translate }}

}
diff --git a/src/app/components/contacts/contact-edit-new/contact-form/contact-form.component.ts b/src/app/components/contacts/contact-edit-new/contact-form/contact-form.component.ts index 191c39b..64c56fd 100644 --- a/src/app/components/contacts/contact-edit-new/contact-form/contact-form.component.ts +++ b/src/app/components/contacts/contact-edit-new/contact-form/contact-form.component.ts @@ -53,11 +53,13 @@ export class ContactFormComponent implements OnInit, OnChanges { }; ngOnInit() { - this.userData = { - ...this.userData, - color: this.randomColor, - lastLogin: new Date().getTime(), - }; + if (!this.currentUserId) { + this.userData = { + ...this.userData, + color: this.randomColor, + lastLogin: new Date().getTime(), + }; + } } ngOnChanges(changes: SimpleChanges) { @@ -88,17 +90,33 @@ export class ContactFormComponent implements OnInit, OnChanges { updateUserData() { this.userData = { ...this.userData, - firstName: - this.contactData.firstName.charAt(0).toUpperCase() + - this.contactData.firstName.slice(1).toLowerCase(), - lastName: - this.contactData.lastName.charAt(0).toUpperCase() + - this.contactData.lastName.slice(1).toLowerCase(), + firstName: this.capitalizeFirstLetter(this.contactData.firstName), + lastName: this.capitalizeFirstLetter(this.contactData.lastName), email: this.contactData.email, phone: this.contactData.phone, }; } + capitalizeFirstLetter(name: string) { + return name.charAt(0).toUpperCase() + name.slice(1).toLowerCase(); + } + + checkIfUserEmailIsValid(emailValue: string) { + const channelNameLenght = emailValue.length; + const emailRegex = /^[\w.%+-]+@[\w.-]+\.[a-zA-Z]{2,}$/; + if (emailRegex.test(emailValue)) { + return true; + } else { + return false; + } + } + + existEmailonServer(mail: string) { + return this.firebaseService + .getAllUsers() + .filter((user) => user.email === mail); + } + private updateContactData() { this.contactData.firstName = this.firebaseService .getUserDetails(this.currentUserId, 'firstName') @@ -124,7 +142,6 @@ export class ContactFormComponent implements OnInit, OnChanges { } else { const { id, ...taskWithoutIds } = this.userData; this.firebaseService.addNewUser(taskWithoutIds); - console.log('add new contact'); } this.closeEditDialog(); } diff --git a/src/assets/i18n/de.json b/src/assets/i18n/de.json index 2aca5b1..1e79b20 100644 --- a/src/assets/i18n/de.json +++ b/src/assets/i18n/de.json @@ -55,13 +55,15 @@ "legalNotice": "Rechtlicher Hinweis", "logout": "Abmelden" }, - "contactDalogForm": { + "contactDialogForm": { "btnDelete": "Löschen", "btnSave": "Sichern", "invalidFirstName": "Ein Vorname ist erforderlich!", "invalidLastName": "Ein Nachname ist erforderlich!", "invalidName": "Ein Vorname & Nachname ist erforderlich!", - "invalidEmail": "Eine E-Mail Adresse ist erforderlich!", + "invalidMail0": "Sie müssen eine E-Mail Adresse eingeben!", + "invalidMail1": "Dies ist kein gültiges E-Mail-Format!", + "invalidMail2": "Diese E-Mail existiert bereits!", "invalidPhone": "Eine Telefonnummer ist erforderlich!", "firstName": "Vorname", "lastName": "Nachname", diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 76e0543..d585cb5 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -55,13 +55,15 @@ "legalNotice": "Legal notice", "logout": "Log out" }, - "contactDalogForm": { + "contactDialogForm": { "btnDelete": "Delete", "btnSave": "Save", "invalidFirstName": "A first name is required!", "invalidLastName": "A last name is required!", "invalidName": "A first name & last name is required!", - "invalidEmail": "A email is required!", + "invalidMail0": "You must enter a mail!", + "invalidMail1": "This is not a valid email format!", + "invalidMail2": "This email already exists!", "invalidPhone": "A phone number is required!", "firstName": "First name", "lastName": "Last name",