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 AtividadeColetiva {
  protected static String sql = "";
  protected static PreparedStatement pstmt;

  public ResultSet getDadosAtividadeColetiva() throws SQLException {
    sql = "SELECT "
      + "   eac.co_cds_ficha_ativ_col,"
      + "   eac.eav_local_atividade,"
      + "   eac.eav_inep,"
      + "   eac.eav_num_participantes,"
      + "   eac.eav_num_aval_alteradas,"
      + "   eac.eav_atividade_tipo,"
      + "   eac.eav_educacao,"
      + "   eac.eav_saude,"
      + "   eac.eav_responsavel_cns,"
      + "   eac.eav_dt_atividade,"
      + "   eac.eav_codigo_ibge,"
      + "   eac.eav_responsavel_ine,"
      + "   eac.eav_responsavel_cnes,"
      + "   eac.eav_uni_cnes,"
      + "   tbac.turno"
      + " FROM esus_atividade_coletiva eac"
      + " JOIN tb_cds_ficha_ativ_col tbac "
      + " ON tbac.co_cds_ficha_ativ_col = eac.co_cds_ficha_ativ_col"
      + " WHERE uuid_ficha IS NULL OR uuid_ficha = ''";
    return CONN.prepareStatement(sql).executeQuery();
  }

  public ResultSet getCodCbo(int codigo) throws SQLException {
    sql = " select rac.cbo from esus_atividade_coletiva ficha "
      + " join tb_cds_ficha_ativ_col fac on fac.co_cds_ficha_ativ_col = ficha.co_cds_ficha_ativ_col "
      +  " join rl_cds_ficha_ativ_col_prof rac on fac.co_cds_ficha_ativ_col = rac.co_cds_ficha_ativ_col and fac.usr_codigo = rac.usr_codigo "
      + " where ficha.co_cds_ficha_ativ_col = ? limit 1";
    pstmt = CONN.prepareStatement(sql);
    pstmt.setInt(1, codigo);
    return pstmt.executeQuery();
  }

  public ResultSet getDadosProfissional(int codAtiv) throws SQLException {
    sql = "SELECT rlacp.cbo, usr.cnes_cod_cns FROM rl_cds_ficha_ativ_col_prof rlacp "
      + " INNER JOIN usuarios usr ON rlacp.usr_codigo=usr.usr_codigo "
      + " WHERE co_cds_ficha_ativ_col = ?";
    pstmt = CONN.prepareStatement(sql);
    pstmt.setInt(1, codAtiv);
    return pstmt.executeQuery();
  }

  public ResultSet getCodigosTemas(int codAtiv) throws SQLException {
    sql = "SELECT co_cds_ativ_col_tema FROM rl_cds_ficha_ativ_col_tema WHERE co_cds_ficha_ativ_col  = ?";
    pstmt = CONN.prepareStatement(sql);
    pstmt.setInt(1, codAtiv);
    return pstmt.executeQuery();
  }

  public ResultSet getCodigosPublicoAlvo(int codAtiv) throws SQLException {
    sql = "SELECT co_cds_ativ_col_publico_alvo FROM rl_cds_ficha_ativ_col_pub_alvo WHERE co_cds_ficha_ativ_col  = ?";
    pstmt = CONN.prepareStatement(sql);
    pstmt.setInt(1, codAtiv);
    return pstmt.executeQuery();
  }

  public ResultSet getCodigosPraticaTema(int codAtiv) throws SQLException {
    sql = " SELECT co_cds_ativ_col_pratica FROM rl_cds_ficha_ativ_col_pratica "
      + " WHERE co_cds_ficha_ativ_col  = ? and co_cds_ativ_col_pratica in (29,19,1,4,5,7,8,10,13,14,15,6,16,17,18,21)";
    pstmt = CONN.prepareStatement(sql);
    pstmt.setInt(1, codAtiv);
    return pstmt.executeQuery();
  }

  public ResultSet getCodigosPraticaPratica(int codAtiv) throws SQLException {
    sql = " SELECT co_cds_ativ_col_pratica FROM rl_cds_ficha_ativ_col_pratica "
      + " WHERE co_cds_ficha_ativ_col  = ? and co_cds_ativ_col_pratica in (20,2,23,9,11,25,26,27,28,22,3,24,12,30)";
    pstmt = CONN.prepareStatement(sql);
    pstmt.setInt(1, codAtiv);
    return pstmt.executeQuery();
  }

  public ResultSet getDadosParticipantes(int codAtiv) throws SQLException {
    sql = " SELECT tbacp.dt_nascimento,tbacp.st_avaliacao_alterada,tbacp.nu_peso,tbacp.nu_altura,"
      + " tbacp.st_cessou_habito_fumar,tbacp.st_abandonou_grupo,usu.usu_cartao_sus,usu.usu_sexo, usu.usu_cpf "
      + " FROM tb_cds_ativ_col_participante tbacp "
      + " INNER JOIN usuario usu ON tbacp.usu_codigo=usu.usu_codigo "
      + " WHERE co_cds_ficha_ativ_col  = ? AND	usu_cartao_sus IS NOT NULL";
    pstmt = CONN.prepareStatement(sql);
    pstmt.setInt(1, codAtiv);
    return pstmt.executeQuery();
  }

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

}
