package br.com.elotech.social.scripts;

import br.com.elotech.social.model.filters.TermoAcolhimentoFamiliaAcolhedoraFilter;

public class FamiliaAcolhedoraScript {

  public static String getSqlFamiliaAcolhedoraAdesao() {
    StringBuilder sb = new StringBuilder()
      .append("SELECT ")
      .append(" usu.usu_nome  	          AS responsavelPrincipal,")
      .append(" usu.usu_rg 	  	          AS rgPrincipal,")
      .append(" usu.uf_sigla_rg	          AS rgSiglaPrincipal,")
      .append(" usu2.usu_nome 	          AS responsavelSecundario,")
      .append(" usu2.usu_rg   	          AS rgSecundario,")
      .append(" usu2.uf_sigla_rg          AS rgSiglaSecundario,")
      .append(" conf.conf_valor_string   	AS legislacao,")
      .append(" sec.nome_cidade AS municipio")
      .append(" FROM asps_acolhimento_inscricao as aspsai")
      .append("   JOIN usuario usu ON usu.usu_codigo = aspsai.aspsai_responsavel_principal")
      .append("   LEFT JOIN usuario usu2 ON usu2.usu_codigo = aspsai.aspsai_responsavel_secundario")
      .append("   LEFT JOIN unidade uni ON uni.uni_codigo = aspsai.aspsai_unidade")
      .append("   LEFT JOIN secretaria sec ON sec.sec_as = uni.uni_as")
      .append("   LEFT JOIN config conf ON conf.conf_codigo = conf.conf_codigo")
      .append(" WHERE aspsai.aspsai_codigo = :aspsaiCodigo")
      .append("   AND conf_chave = 'SFA_LEGISLACAO'");
    return sb.toString();
  }

  public static String getSqlTermoAdesao(TermoAcolhimentoFamiliaAcolhedoraFilter filter) {

    return "SELECT u2.usu_nome AS nome,"
      + " aha.numero_movimento as numero_movimento,"
      + " u2.usu_datanasc AS data_nascimento,"
      + " aai.aspsai_responsavel_principal AS responsavel_principal,"
      + " aai.aspsai_responsavel_secundario AS responsavel_secundario,"
      + " apsu.aspsu_parentesco AS parentesco,"
      + " aha.documentos_entregues AS documentos,"
      + " aha.auto AS auto, "
      + " aha.aspsha_codigo "
      + " FROM asps_hist_acolhimento aha"
      + " INNER JOIN asps_acolhimento_inscricao aai ON aha.aspsai_codigo = aai.aspsai_codigo"
      + " INNER JOIN usuario u2 ON aha.usu_codigo = u2.usu_codigo"
      + " LEFT JOIN as_prontuario_suas_usuario apsu"
      + "       ON aai.aspsai_responsavel_secundario = apsu.usu_codigo"
      + "      AND aai.asps_codigo = apsu.asps_codigo"
      + " WHERE aha.aspsha_dtfinal IS NULL AND aha.aspsai_codigo = :aspsaiCodigo";
  }

  public static String getDadosResponsavel() {

    return "SELECT usu_nome, "
      + "          usu_rg,"
      + "          usu_rg_emissor,"
      + "          uf_sigla_rg,"
      + "          usu_cpf,"
      + "          no_ocupacao,"
      + "          dom_codigo "
      + "  FROM usuario"
      + "  LEFT JOIN tb_ocupacao ON usu_cbo_r = co_ocupacao"
      + "  WHERE usu_codigo = :usuCodigo";
  }

  public static String getDadosEndereco() {
    return "SELECT r.rua_nome AS rua, "
      + "       d.dom_numero AS numero, "
      + "       b.bai_nome AS bairro, "
      + "       r.rua_cep AS cep, "
      + "       c.cid_nome AS cidade, "
      + "       c.uf_sigla AS sigla, "
      + "       tmtl.ds_tipo_logradouro AS tipo_logradouro "
      + "FROM domicilio d "
      + "  LEFT JOIN rua r ON d.rua_codigo = r.rua_codigo "
      + "  LEFT JOIN bairro b ON b.bai_codigo = r.bai_codigo "
      + "  LEFT JOIN cidade c ON c.cid_codigo = b.bai_codigo "
      + "  LEFT JOIN tb_ms_tipo_logradouro tmtl ON r.co_tipo_logradouro = tmtl.co_tipo_logradouro "
      + "WHERE d.dom_codigo = :domCodigo";
  }

  public static String getNomeCidade() {
    return "SELECT conf_valor_string as nome_cidade FROM config WHERE conf_chave = 'NOME_CIDADE'";
  }

  public static String getDadosProfissionais() {
    return "SELECT usu1.usr_nome AS nome_principal, "
      + "       con1.con_descricao AS conselho_principal, "
      + "       usu1.usr_num_conselho AS numero_conselho_principal, "
      + "       esp1.esp_nome AS especialidade_principal, "
      + "       usu2.usr_nome AS nome_secundario, "
      + "       con2.con_descricao AS conselho_secundario, "
      + "       usu2.usr_num_conselho AS numero_conselho_secundario, "
      + "       esp2.esp_nome AS especialidade_secundario "
      + "FROM asps_hist_acolhimento aha "
      + "  INNER JOIN usuarios usu1 ON aha.usr_codigo_principal = usu1.usr_codigo "
      + "  LEFT JOIN conselho con1 ON usu1.con_codigo = con1.con_codigo "
      + "  INNER JOIN medico_especialidade me1 ON usu1.usr_codigo = me1.med_codigo AND aha.uni_codigo_principal = me1.uni_codigo "
      + "  INNER JOIN especialidade esp1 ON aha.esp_codigo_principal = esp1.esp_codigo "
      + "  LEFT JOIN usuarios usu2 ON aha.uni_codigo_secundario = usu2.usr_codigo "
      + "  LEFT JOIN conselho con2 ON usu2.con_codigo = con2.con_codigo "
      + "  LEFT JOIN medico_especialidade me2 ON usu2.usr_codigo = me2.med_codigo AND aha.uni_codigo_secundario = me2.uni_codigo "
      + "  LEFT JOIN especialidade esp2 ON aha.esp_codigo_secundario = esp2.esp_codigo "
      + "WHERE aha.aspsha_codigo = :aspshaCodigo";
  }
}
