import { Component, OnInit } from '@angular/core';
import { RouterModule } from '@angular/router';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { AuthService } from '../../services/auth.service'
import { Router, ActivatedRoute } from '@angular/router';

@Component({
  selector: 'app-cadastro-nova-senha',
  standalone: true,
  imports: [FormsModule, CommonModule],
  templateUrl: './cadastro-nova-senha.component.html',
  styleUrl: './cadastro-nova-senha.component.css'
})
export class CadastroNovaSenhaComponent implements OnInit {
  senha: string = '';
  confirmaSenha: String = '';
  loading = false;
  error = '';
  message = '';
  private token: string | null = null;

  constructor(
        private authService: AuthService,
        private router: Router,
        private route: ActivatedRoute
      ) {  }
  
  ngOnInit(): void {
    this.route.queryParamMap.subscribe(params => {
      this.token = params.get('token');
    });
  };
  cadastraNovaSenha(){
    this.error = '';
    this.message = '';
    this.senha = this.senha.trim();
    this.confirmaSenha = this.confirmaSenha.trim();
    
    if (!this.senha || !this.confirmaSenha) {
      this.error = 'Por favor, preencha ambos os campos de senha.';
      return;
    }
    if (this.senha !== this.confirmaSenha) {
      this.error = 'As senhas não coincidem.';
      return;
    }
    if (!this.token) {
        this.error = 'Token de redefinição ausente. Por favor, solicite um novo link.';
        setTimeout(() => {
          this.router.navigate(['/login/recuperar']);
        }, 4000);
        return;
    }
    this.loading = true;

    this.authService.cadastraNovaSenha(this.senha, this.token).subscribe({
      next: (response) => {
        this.message = response;
        this.loading = false;
        //alert(response); // Mensagem de sucesso
        this.senha = '';
        this.confirmaSenha = '';
        setTimeout(() => {
          this.router.navigate(['/login']);
        }, 4000); // Redireciona para o login após 3 segundos
      },
      error: (err) => {
        console.error('Erro ao cadastrar nova senha: ', err);
        if (err.error && typeof err.error === 'string') {
            this.error = err.error; // Erro vindo do backend (ex: "Token expirado")
        } else {
            this.error = 'Erro ao cadastrar nova senha. Tente novamente mais tarde.';
        }
        this.loading = false;
        this.senha = '';
        this.confirmaSenha = '';
        setTimeout(() => {
          this.router.navigate(['/login/recuperar']);
        }, 4000);
      },
    });

  }
}
