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 BancoCadastroIndividual {

  protected static String sql = "";
  protected static PreparedStatement pstmt;

  public ResultSet getDados() throws SQLException {
    sql = new StringBuilder()
      .append(" SELECT eci_codigo,eci.usu_codigo, eci_usr_cnes, eci_usr_profissional_cns,eci_usr_codigo_ibge,")
      .append(" eci_usr_dtatendimento, eci_usu_codigo_ibge,eci_usu_dtnascimento,eci_usu_nacionalidade,").append(
        " usu.usu_plano_saude as eci_usu_plano_saude,usu.usu_obito as eci_usu_obito,usu.usu_mudanca_territorio as eci_usu_mudanca_territorio,")
      .append(
        " usu.usu_numero_do as eci_usu_numero_do,usu.usu_dt_obito as eci_usu_dt_obito,usu_recusa as eci_usu_recusa,")
      .append(" retira_acentuacao(eci_usu_nome) as eci_usu_nome, eci_usu_nome_social as eci_usu_nome_social,")
      .append(" retira_acentuacao(eci_usu_mae) as eci_usu_mae,retira_acentuacao(eci_usu_pai) as eci_usu_pai,")
      .append(" eci_usu_pis_pasep,eci_usu_email,eci_usu_celular,eci_usu_ocupacao,eci_usu_st_responsavel_familiar,")
      .append(" eci_usu_raca, eci_usu_sexo, eci_usu_escola, eci_usu_sit_rua, eci_usu_deficiencia, eci_usu_cns, ")
      .append(" usu.usu_cartao_sus, usu.usu_tem_diabete,usu.usu_esta_gestante,usu.usu_tem_hipertensao,")
      .append(" uuid_ficha,usr.usr_codigo,uuid_ficha_ori,usu.etn_codigo,usu.epa_codigo,usu.nr_portaria_naturalizacao,")
      .append(" usu.dt_naturalizacao,usu.usu_dt_entrada_pais,usu.usu_sexo, eci_usu_parentesco_resp, eci_usu_numero_do,")
      .append(
        " eci_usr_cbo, eci_usr_ine, eci_usu_microarea, eci_usu_microarea_fa, eci_usu_maternidade_ref, eci_usu_mudanca_territorio,")
      .append(
        " eci_usu_curso_mais_elevado,eci_usu_mercado_trabalho,eci_usu_freq_cuidador_trad,eci_usu_grupo_comunitario,")
      .append(
        " eci_usu_povo_comunidade_trad,eci_usu_povo_comunidade_trad_nome,eci_usu_orientacao_sexual,eci_usu_orientacao_sexual_nome,")
      .append(" eci_usu_identidade_genero,eci_usu_identidade_genero_nome,eci_usu_peso,eci_usu_fumante,eci_usu_alcool,")
      .append(" eci_usu_drogas,eci_usu_avc_derrame,eci_usu_infarto,eci_usu_doenca_cardiaca,eci_usu_problema_rins,")
      .append(
        " eci_usu_doenca_respiratoria,eci_usu_hanseniase,eci_usu_tuberculose,eci_usu_cancer,eci_usu_internacao_dose_meses,")
      .append(" eci_usu_internacao_dose_meses_causa,eci_usu_problema_saude_mental,eci_usu_acamado,eci_usu_domiciliado,")
      .append(
        " eci_usu_plantas_medicinais,eci_usu_plantas_medicinais_nome,eci_usu_praticas_integrat_complem,eci_usu_condicao_saude1,")
      .append(" eci_usu_condicao_saude2,eci_usu_condicao_saude3,eci_usu_situacao_rua_tempo,eci_usu_recebe_beneficio,")
      .append(" eci_usu_referencia_familiar,eci_usu_vezes_alimenta_dia,eci_usu_acompanhado_intituicao,")
      .append(" eci_usu_acompanhado_intituicao_nome,eci_usu_vista_familiar_frequencia,eci_usu_vista_familiar_grau,")
      .append(" eci_usu_acesso_higiene_pessoal, eci_cns_responsavel_familiar, eci_cpf, eci_cpf_responsavel_familiar ")
      .append(" FROM esus_cadastro_individual eci ")
      .append("   JOIN usuarios usr ON eci.eci_usr_profissional_cns = usr.cnes_cod_cns ")
      .append("   JOIN usuario usu ON eci.usu_codigo = usu.usu_codigo WHERE (uuid_ficha IS NULL OR uuid_ficha = '') ")
      .append("   AND (eci.eci_usu_microarea IS NOT NULL OR eci.eci_usu_microarea_fa = 't') ")
      .append("   AND eci_usr_cbo IS NOT NULL ").toString();
    pstmt = CONN.prepareStatement(sql);
    return pstmt.executeQuery();
  }

  public ResultSet getResponsavelPorCrianca(int usuCodigo) throws SQLException {
    sql = "select co_pergunta_detalhe as eci_pergunta_detalhe "
      + "from usuario_crianca_responsavel "
      + "where usu_codigo = ? ";
    pstmt = CONN.prepareStatement(sql);
    pstmt.setInt(1, usuCodigo);
    return pstmt.executeQuery();
  }

  public ResultSet getDeficienciasCidadao(int usuCodigo) throws SQLException {
    sql = "select co_pergunta_detalhe as eci_pergunta_detalhe "
      + "from usuario_deficiencias "
      + "where usu_codigo = ? ";
    pstmt = CONN.prepareStatement(sql);
    pstmt.setInt(1, usuCodigo);
    return pstmt.executeQuery();
  }

  public ResultSet getDoencaCardiaca(int usuCodigo) throws SQLException {
    sql = "select co_pergunta_detalhe as eci_pergunta_detalhe "
      + "from usuario_doenca_cardiaca "
      + "where usu_codigo = ? ";
    pstmt = CONN.prepareStatement(sql);
    pstmt.setInt(1, usuCodigo);
    return pstmt.executeQuery();
  }

  public ResultSet getDoencaRins(int usuCodigo) throws SQLException {
    sql = "select co_pergunta_detalhe as eci_pergunta_detalhe "
      + "from usuario_doenca_rins "
      + "where usu_codigo = ? ";
    pstmt = CONN.prepareStatement(sql);
    pstmt.setInt(1, usuCodigo);
    return pstmt.executeQuery();
  }

  public ResultSet getDoencaRespiratoria(int usuCodigo) throws SQLException {
    sql = "select co_pergunta_detalhe as eci_pergunta_detalhe "
      + "from usuario_doenca_pulmonar "
      + "where usu_codigo = ? ";
    pstmt = CONN.prepareStatement(sql);
    pstmt.setInt(1, usuCodigo);
    return pstmt.executeQuery();
  }

  public ResultSet getOrigemAlimentoSituacaoRua(int usuCodigo) throws SQLException {
    sql = "select co_pergunta_detalhe as eci_pergunta_detalhe "
      + "from usuario_origem_alimentacao "
      + "where usu_codigo = ? ";
    pstmt = CONN.prepareStatement(sql);
    pstmt.setInt(1, usuCodigo);
    return pstmt.executeQuery();
  }

  public ResultSet getHigienePessoalSituacaoRua(int usuCodigo) throws SQLException {
    sql = "select co_pergunta_detalhe as eci_pergunta_detalhe "
      + "from usuario_higiene "
      + "where usu_codigo = ? ";
    pstmt = CONN.prepareStatement(sql);
    pstmt.setInt(1, usuCodigo);
    return pstmt.executeQuery();
  }

  public boolean atualizaStatus(String uuid, int codigo, String uuidFichaOri) throws SQLException {
    sql = "UPDATE esus_cadastro_individual SET uuid_ficha = ?, uuid_ficha_ori = ? WHERE eci_codigo = ?";
    pstmt = CONN.prepareStatement(sql);
    pstmt.setString(1, uuid);
    pstmt.setString(2, uuidFichaOri);
    pstmt.setInt(3, codigo);

    pstmt.executeUpdate();
    return true;
  }

}
