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

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

  public ResultSet getDados() throws SQLException {
    sql = "SELECT DISTINCT eo.*, ate.turno "
      + " FROM esus_odonto eo "
      + " JOIN odonto_procedimentos_controle opc ON opc.odo_pcon_codigo = eo.odo_pcon_codigo"
      + " JOIN atendimento ate ON ate.ate_codigo = opc.ate_codigo"
      + " WHERE uuid IS NULL OR uuid = ''";
    pstmt = CONN.prepareStatement(sql);
    return pstmt.executeQuery();
  }

  public ResultSet getProcedimentos(int odoPconCodigo) throws SQLException {
    sql = "SELECT DISTINCT proc.proc_codigo_sus FROM odonto_procedimentos_realizados opr "
      + "INNER JOIN procedimento proc ON opr.proc_codigo=proc.proc_codigo "
      + "WHERE opr.odo_pcon_codigo = ?";
    pstmt = CONN.prepareStatement(sql);
    pstmt.setInt(1, odoPconCodigo);
    return pstmt.executeQuery();
  }

  public ResultSet getCondutaEncaminhamento(int odoPconCodigo) throws SQLException {
    sql = "SELECT rlote.tp_cds_encam_odonto FROM rl_cds_atend_odonto_tipo_encam rlote "
      + "INNER JOIN atendimento ate ON rlote.ate_codigo=ate.ate_codigo "
      + "INNER JOIN odonto_procedimentos_controle opc ON ate.ate_codigo=opc.ate_codigo "
      + "WHERE opc.odo_pcon_codigo = ?";
    pstmt = CONN.prepareStatement(sql);
    pstmt.setInt(1, odoPconCodigo);
    return pstmt.executeQuery();
  }

  public ResultSet getVigilanciaSaudeBucal(int odoPconCodigo) throws SQLException {
    sql = "SELECT rltvb.tp_cds_vig_saude_bucal FROM rl_cds_atend_odont_tip_vig_buc rltvb "
      + "INNER JOIN atendimento ate ON rltvb.ate_codigo=ate.ate_codigo "
      + "INNER JOIN odonto_procedimentos_controle opc ON ate.ate_codigo=opc.ate_codigo "
      + "WHERE opc.odo_pcon_codigo = ?";
    pstmt = CONN.prepareStatement(sql);
    pstmt.setInt(1, odoPconCodigo);
    return pstmt.executeQuery();
  }

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

}
