import { Component } from '@angular/core';
import { MatDialog } from '@angular/material/dialog';
import { ActivatedRoute, ParamMap, Router } from '@angular/router';
import { Paciente } from 'src/app/models/paciente.model';
import { PacienteService } from 'src/app/services/paciente/paciente.service';
import { CadDialogComponent } from '../cad-dialog/cad-dialog.component';

@Component({
  selector: 'app-cad-paciente',
  templateUrl: './cad-paciente.component.html',
  styleUrls: ['./cad-paciente.component.css']
})
export class CadPacienteComponent {
  id : number = 0
  edicao: boolean = false

  nome: string = ''
  cpf : string = ''
  genero : string = ''
  dataNasci : string = ''
  cidade : string = ''
  uf : string = ''
  unidSaudeId : number = 1
  cid : string = ''
  siglasEstados: string[] = ['AC', 'AL', 'AP', 'AM', 'BA', 'CE', 'DF', 'ES', 'GO', 'MA', 'MT', 'MS', 'MG', 'PA', 'PB', 'PR', 'PE', 'PI', 'RJ', 'RN', 'RS', 'RO', 'RR', 'SC', 'SP', 'SE', 'TO'];
  constructor(
    private readonly pacienteService : PacienteService,
    private readonly _router: Router,
    private readonly _activatedRoute: ActivatedRoute,
    private dialog: MatDialog
  ){}

  ngOnInit() {
    this._activatedRoute.params.subscribe((params: any) => {
      const id = params['id']

      if (!id) return

      this.id = id

      this.pacienteService.buscarPaciente(this.id).subscribe({
        next: (res) => {
          console.log(res)

          if (!res) return

          this.edicao = true

          this.nome = res.nome
          this.cpf = res.cpf
          this.genero = res.genero
          this.dataNasci = res.dataNasci
          this.cidade = res.cidade
          this.uf = res.uf
          this.unidSaudeId = res.unidSaudeId
          this.cid = res.cid
        },
        error: (err) => console.error(err)
      })
    })
  }

  cadastrarOuAtualizarPaciente() {
    if (this.edicao) return this.atualizarPaciente()
    this.cadastrarPaciente()
    this._router.navigate(['/list-pacientes'])
  }

  atualizarPaciente() {
    let p : Paciente = {id : this.id, nome: this.nome, cpf : this.cpf, genero : this.genero, dataNasci: this.dataNasci, cidade : this.cidade, uf : this.uf, unidSaudeId : this.unidSaudeId}
    this.pacienteService.atualizarPaciente(this.id, p).subscribe({
      next: (res) => console.log(res),
      error: (err) => console.error(err),
      complete: () => console.log("Atualização concluída")
    })
  }
  
  cadastrarPaciente()
  {
    let p : Paciente = {id : 0, nome: this.nome, cpf : this.cpf, genero : this.genero, dataNasci: this.dataNasci, cidade : this.cidade, uf : this.uf, unidSaudeId : this.unidSaudeId}
    this.apiCadastroPaciente(this.unidSaudeId, p).subscribe({
      next: (res) => console.log(res),
      error: (err) => console.error(err),
      complete: () => console.log("Cadastro concluído")
    })
  }
  apiCadastroPaciente(unidId : number, paciente : Paciente)
  {
    const unidadeId = Number(localStorage.getItem('UserId'))
    unidId = unidadeId
    return this.pacienteService.cadastrarPaciente(unidId, paciente)
  }
   
  voltarPraTelaInicial(){
    this._router.navigate(['/homePrivada'])
  }

  openDialog() {
    const dialogRef = this.dialog.open(CadDialogComponent, {
      width: '400px',
      height: '150px'
    })

    dialogRef.afterClosed().subscribe((result) => {
      if(result === true){
        this.cadastrarOuAtualizarPaciente()
      }
      else{
        console.log('Erro ao cadastrar unidade')
      }
    })
  }

}
