From 89664993d0eed133c07041010f26f2866e47b700 Mon Sep 17 00:00:00 2001 From: Samir Comas Moral Date: Thu, 22 Feb 2024 10:59:12 +0100 Subject: [PATCH] start login modal --- .../login-modal/login-modal.component.ts | 76 +++++++++---------- src/app/services/auth.service.ts | 2 +- src/app/services/validatiors.service.spec.ts | 16 ++++ src/app/services/validatiors.service.ts | 21 +++++ 4 files changed, 72 insertions(+), 43 deletions(-) create mode 100644 src/app/services/validatiors.service.spec.ts create mode 100644 src/app/services/validatiors.service.ts diff --git a/src/app/modules/modals/login-modal/login-modal.component.ts b/src/app/modules/modals/login-modal/login-modal.component.ts index d7ff1b7f..44f15b9e 100644 --- a/src/app/modules/modals/login-modal/login-modal.component.ts +++ b/src/app/modules/modals/login-modal/login-modal.component.ts @@ -5,6 +5,7 @@ import { FormBuilder, Validators } from '@angular/forms'; import { AuthService } from './../../../services/auth.service'; import { Router } from '@angular/router'; import { User } from "src/app/models/user.model"; +import { ValidatiorsService } from 'src/app/services/validatiors.service'; @Component({ selector: 'app-login-modal', @@ -12,65 +13,56 @@ import { User } from "src/app/models/user.model"; styleUrls: ['./login-modal.component.scss'] }) export class LoginModalComponent { - loginError: string = ""; - - loginForm = this.formBuilder.group({ - dni: ['', Validators.required], - password: ['', Validators.required] - }); constructor(private modalService: NgbModal, private formBuilder: FormBuilder, private authService: AuthService, + private validatorsService: ValidatiorsService, private router: Router) { } + loginError: string = ""; - login() { + loginForm = this.formBuilder.group({ + dni: ['', Validators.required], + password: ['', Validators.required] + }); + + public login(): void { + this.loginForm.markAllAsTouched(); if (this.loginForm.valid) { - const dni = this.loginForm.get("dni")?.value || ""; - const password = this.loginForm.get("password")?.value || ""; + let user: User = { + idUser: '', + dni: `${this.loginForm.get('dni')?.value}`, + password: `${this.loginForm.get('password')?.value}`, + } - console.log('*************', this.loginForm) + let registerResp = this.authService.login(user) + .then( (res) => {this.openSuccessfulLoginModal(res)}) + .catch( (err) => this.notifyErrorLogin(err)); + } + }; + public isValidField(field: string) { + return this.validatorsService.isValidField(this.loginForm, field); + }; -/* this.authService.login(dni, password).subscribe({ - next: (userData) => { - console.log(userData, "login") - // actions like redirecting user to another page - }, - error: (errorData) => { - console.error(errorData); - if (typeof errorData.error === 'string') { - // Si errorData.error es una cadena de texto, es probable que sea el mensaje de error. - this.loginError = errorData.error; - } else if (errorData.error && errorData.error.message) { - // Si errorData.error.message existe, asumimos que es el mensaje de error. - this.loginError = errorData.error.message; - } else { - // Si no se puede determinar el mensaje de error, mostrar un mensaje genérico. - this.loginError = 'Hubo un error en el inicio de sesión'; - } - }, - complete: () => { - console.log('Login Completo') - // this.router.navigateByUrl('/') - this.closeModal(); - } - });*/ + public openSuccessfulLoginModal(res: any) { + //TODO create routing to the page after success login + alert('Success login'); + } - } - else { - // alert('error al ingresar datos') - this.loginForm.markAllAsTouched() + public notifyErrorLogin(err: any) { + if ((typeof err.message) === "string") { + this.loginError = err.message; + } else { + this.loginError = 'Error en el registro'; } } - - closeModal() { this.modalService.dismissAll(); } - openRegisterModal(){ + openRegisterModal() { this.closeModal(); - this.modalService.open(RegisterModalComponent, { centered : true, size : 'lg' }) + this.modalService.open(RegisterModalComponent, { centered: true, size: 'lg' }) } } diff --git a/src/app/services/auth.service.ts b/src/app/services/auth.service.ts index 996fe7e7..eb938334 100644 --- a/src/app/services/auth.service.ts +++ b/src/app/services/auth.service.ts @@ -94,7 +94,7 @@ export class AuthService { } }) } - + public register(user: User): Promise { return new Promise((resolve, reject) => { this.registerRequest(user).subscribe({ diff --git a/src/app/services/validatiors.service.spec.ts b/src/app/services/validatiors.service.spec.ts new file mode 100644 index 00000000..aa107ec2 --- /dev/null +++ b/src/app/services/validatiors.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { ValidatiorsService } from './validatiors.service'; + +describe('ValidatiorsService', () => { + let service: ValidatiorsService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(ValidatiorsService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/src/app/services/validatiors.service.ts b/src/app/services/validatiors.service.ts new file mode 100644 index 00000000..e92006db --- /dev/null +++ b/src/app/services/validatiors.service.ts @@ -0,0 +1,21 @@ +import { Injectable } from '@angular/core'; +import { FormGroup } from '@angular/forms'; + +@Injectable({ + providedIn: 'root' +}) +export class ValidatiorsService { + + //dni + public dniPattern: string = '^[a-zA-Z]{2,}(?: [a-zA-Z]+)*$'; + + //password + public passwordPattern: string = '^[a-zA-Z0-9]{6,}$'; + + + + //validations control + public isValidField(form: FormGroup, field: string) { + return form.controls[field].errors && form.controls[field].touched; + }; +}