import { Component, OnInit } from '@angular/core';
import { CommonModule } from '@angular/common';
import { listPacienteService } from '../services/listPaciente/list-paciente.service';
import { Pacientes } from '../models/paciente';
import { RouterModule } from '@angular/router';
import { FormsModule } from '@angular/forms';
import { MatDialog } from '@angular/material/dialog';


@Component({
  selector: 'app-tab2',
  templateUrl: 'tab2.page.html',
  styleUrls: ['tab2.page.scss']
})
export class Tab2Page implements OnInit {
  pacientes: Pacientes[] = []
  searchQuery: string = ''
  unidIdNumber: number | undefined

  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(this.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)
    }
  }

  removePaciente(id: number | undefined) {
    if (id !== undefined) {
      this.listPacienteService.removePaciente(id).subscribe(
        () => {
          const unidId = localStorage.getItem('UserId');
          const unidIdNumber = unidId ? +unidId : undefined;
          this.loadPacientes(unidIdNumber);
        },
        (error) => {
          console.error('Erro ao remover o paciente', error);
        }
      );
    } else {
      console.error('ID do paciente é undefined');
    }
  }
}