import { Component, OnInit } from '@angular/core';
import { CommonModule } from '@angular/common';
import { listPacienteService } from 'src/app/services/list-paciente/list-paciente.service';
import { Pacientes } from 'src/app/models/paciente';
import { RouterModule } from '@angular/router';
import { FormsModule } from '@angular/forms';
import { NavbarModule } from '../navbar/navbar.module';
import { MatDialog } from '@angular/material/dialog';
import { ModalCIDComponent } from './modal-cid/modal-cid.component';

@Component({
  selector: 'app-list-pacientes',
  standalone: true,
  imports: [CommonModule, RouterModule, FormsModule, NavbarModule],
  templateUrl: './list-pacientes.component.html',
  styleUrls: ['./list-pacientes.component.css']
})
export class ListPacientesComponent  implements OnInit {
  pacientes: Pacientes[] = []
  searchQuery: string = '';

  constructor(
    private listPacienteService: listPacienteService,
    public dialog: MatDialog
    ) { }

    openDialog(): void {
      const dialogRef = this.dialog.open(ModalCIDComponent, {
        width: '400px',
        data: {} // Pode passar dados para o modal, se necessário
      });
  
      dialogRef.afterClosed().subscribe(result => {
        console.log('O modal foi fechado', result);
      });
    }

  ngOnInit() { 
    const unidId = localStorage.getItem('UserId');
    console.log(unidId);

    // Verifica se unidId é uma string e converte para número, ou define como undefined caso seja null
    const unidIdNumber = unidId ? +unidId : undefined;

    this.loadPacientes(unidIdNumber);
  }

  public get listPaciente() {
    return localStorage.getItem('id');
  }

  loadPacientes(unidId: number | undefined ) {
    this.listPacienteService.getAllPacientes(unidId || 0).subscribe(
      (response) => {
        this.pacientes = response;
      },
      (error) => {
        console.error('Erro ao obter os pacientes', error);
      }
    );
  }

  buscarPacientePeloNome(name: string) {
    this.listPacienteService.getPacienteByName(name).subscribe(
      (response) => {
        this.pacientes = response;
      },
      (error) => {
        console.error('Erro ao obter os pacientes por nome', error);
      }
    );
  }

  onSearchSubmit(event: Event) {
    event.preventDefault();

    const name = this.searchQuery.trim();
    let found = this.pacientes.filter( f => f.nome.includes(name))
    if(found.length > 0 && name != "")
    {
      this.pacientes = found
    }
    else 
    {
      const unidId = localStorage.getItem('UserId');
      // Verifica se unidId é uma string e converte para número, ou define como undefined caso seja null
      const unidIdNumber = unidId ? +unidId : undefined;
      this.loadPacientes(unidIdNumber)
    }
  }
 
}

