package br.com.elotech.websaude.integracao.esus.model;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import static br.com.elotech.websaude.integracao.esus.model.dao.Conexao.CONN;

public class BancoFichaVacinacao {
  protected static String sql = "";
  protected static PreparedStatement pstmt;
  private StringBuilder builder;

  public ResultSet getDadosFichaVacinacaoChild() throws SQLException {
    builder = new StringBuilder();
    builder.append(" SELECT")
      .append("   efv.efv_codigo        AS codigo,")
      .append("   usr.cnes_cod_cns      AS profissionalCNS,")
      .append("   uni.uni_cnes          AS cnes,")
      .append("   teq.nu_ine            AS ine,")
      .append("   esp.cod_cbo           AS cboCodigo_2002,")
      .append("   efv.efv_data          AS dataAtendimento,")
      .append("   efv.efv_cod_igbe_mun  AS codigoIbgeMunicipio,")
      .append("   efv.efv_turno         AS turno,")
      .append("   usu.usu_prontuario    AS numProntuario,")
      .append("   usu.usu_cartao_sus    AS cnsCidadao,")
      .append("   usu.usu_cpf           AS cpfCidadao,")
      .append("   usu.usu_datanasc      AS dtNascimento,")
      .append("   usu.usu_sexo          AS sexo,")
      .append("   efv.co_local_atend    AS localAtendimento,")
      .append("   efv.efv_viajante      AS viajante,")
      .append("   efv.efv_hanseniase    AS comunicanteHanseniase,")
      .append("   efv.efv_gestante      AS gestante,")
      .append("   efv.efv_puerpera      AS puerpera,")
      .append("   efv.efv_hora_inicial  AS horaInicial,")
      .append("   efv.efv_hora_final    AS horaFinal")
      .append(" FROM esus_ficha_vacinacao efv")
      .append("   JOIN usuario usu ON efv.usu_codigo = usu.usu_codigo")
      .append("   JOIN usuarios usr ON efv.usr_codigo = usr.usr_codigo")
      .append("   JOIN unidade uni ON efv.uni_codigo = uni.uni_codigo")
      .append("   JOIN especialidade esp ON efv.esp_codigo = esp.esp_codigo")
      .append("   LEFT JOIN tb_equipe teq ON efv.usr_equipe_codigo = teq.co_seq_equipe")
      .append(" WHERE uuid_ficha IS NULL OR uuid_ficha = ''");
    pstmt = CONN.prepareStatement(builder.toString());
    return pstmt.executeQuery();
  }

  public ResultSet getDadosVacinaRowThrift(int efvCodigo) throws SQLException {
    builder = new StringBuilder();
    builder.append("SELECT DISTINCT")
      .append("   fvv.tvi_codigo      AS imunobiologico,")
      .append("   fvv.tve_codigo      AS estrategiaVacinacao,")
      .append("   fvv.tvd_codigo      AS dose,")
      .append("   fvv.tvd_lote        AS lote,")
      .append("   fvv.tvd_fabricante  AS fabricante")
      .append(" FROM esus_ficha_vacinacao_vacinas fvv")
      .append(" WHERE fvv.efv_codigo = ?");
    pstmt = CONN.prepareStatement(builder.toString());
    pstmt.setInt(1, efvCodigo);
    return pstmt.executeQuery();
  }

  public boolean atualizaStatus(String uuid, int codigo) throws SQLException {
    sql = "UPDATE esus_ficha_vacinacao SET uuid_ficha = ? WHERE efv_codigo = ?";
    pstmt = CONN.prepareStatement(sql);
    pstmt.setString(1, uuid);
    pstmt.setInt(2, codigo);
    pstmt.executeUpdate();
    return true;
  }

}
