import { Component, OnInit, ViewChild } from '@angular/core';
import { NgForm } from '@angular/forms';
import { Usuarios } from '../../../models/usuarios.model';
import { UsuariosService } from '../../../services/usuarios.service';
import { ActivatedRoute, Router } from '@angular/router';
import { FormsModule } from '@angular/forms';
import { CommonModule } from '@angular/common';
import { RouterModule } from '@angular/router';

@Component({
  selector: 'app-editar-usuario',
  standalone: true,
  imports: [
    FormsModule,
    CommonModule,
    RouterModule,
  ],
  templateUrl: './editar-usuarios.component.html',
  styleUrls: ['./editar-usuarios.component.css']
})

export class EditarUsuarioComponent implements OnInit {
  cpfValido: boolean = true;

  @ViewChild("formUsuario") formUsuario!: NgForm;
  usuario: Usuarios = {
    id: 0,
    nome: '',
    email: '',
    cpf: '',
    setor: '',
    cargo: '',
    perfil:''
  };

  modalUsuarios = false;
  message: string ='';

  constructor(
    private usuariosService: UsuariosService,
    private route: ActivatedRoute,
    private router: Router,
  ) {}

  ngOnInit(): void {
    let id = +this.route.snapshot.params['id'];
    this.usuariosService.buscarPorId(id).subscribe(
      res=> {
        if (res) {
          this.usuario = res;
        } else
          throw new Error("REGISTRO NÃO ENCONTRADO");
      }
    )
  }

  atualizar(): void {
    if (this.formUsuario.form.valid) {
      console.log('Dados enviados:', this.usuario);

      this.usuariosService.atualizarUsuario(this.usuario).subscribe({
        next: () => {
            this.message = 'Usuário atualizado com sucesso:';
            this.modalUsuarios = true;
        },
        error: (err) => {
          console.error('Erro ao atualizar usuário:', err);
        }
      });
    } else {
      console.warn('Formulário inválido:', this.formUsuario.form);
    }
  }

  validarCpf(cpfComMascara: string | number | undefined): boolean {
    if (!cpfComMascara) return false;
    const cpfString = cpfComMascara.toString();
    const cpfLimpo = cpfString.replace(/\D/g, ''); // remove tudo que não é dígito
    return cpfLimpo.length === 11;
  }

  fecharModalEredirecionar(): void {
    this.modalUsuarios = false;
    this.message ='';
    this.router.navigate(['/usuarios']);
  }
}