package br.com.elotech.social.scripts;

public class PlanoIndividualAtendimentoScript {

  public static String getSql() {

    StringBuilder sb = new StringBuilder()
        .append(" SELECT")
        .append("  aspsha.aspsha_dtinicio                   AS dataAcolhimento,")
        .append("  aspsha.auto                              AS auto,")
        .append("  aspsha.aspsha_motivo                     AS motivoAcolhimento,")
        .append("  aspsha.aspsha_origem_encaminhamento      AS origemAcolhimento,")
        .append("  aspsha.asps_codigo                       AS aspsCodigo,")
        .append("  usu.usu_codigo                           AS usuCodigo,")
        .append("  usu.usu_nome                             AS nomeAcolhido,")
        .append("  CASE usu.usu_sexo")
        .append("    WHEN 'M'")
        .append("      THEN 'MASCULINO'")
        .append("    WHEN 'F'")
        .append("     THEN 'FEMININO' END                   AS sexo,")
        .append("  usu.usu_datanasc                         AS dataNascimento,")
        .append("  EXTRACT(YEAR FROM AGE(usu.usu_datanasc)) AS idade,")
        .append("  rac.rac_descricao                        AS raca,")
        .append("  cid.cid_nome                             AS naturalidade,")
        .append("  usu.usu_rg                               AS rg,")
        .append("  usu.usu_rg_dt_emissao                    AS dataEmissao,")
        .append("  usu.usu_cpf                              AS cpf,")
        .append("  usu.usu_as_peso                          AS peso,")
        .append("  usu.usu_as_altura                        AS altura,")
        .append("  usu.usu_tipo_sanguineo                   AS tipoSanguineo,")
        .append("  usu.usu_fator_rh                         AS fatorRh,")
        .append("  usu.as_renda_mensal                      AS renda,")
        .append("  usu.as_outros_dados_escolares            AS serie,")
        .append("  aspsac.condicoes_chegada                 AS condicoesChegada,")
        .append("  responsavel.usu_nome                     AS responsavelAcolhimento,")
        .append("  aspsacpr.parecer                         AS parecer,")
        .append("  aspsacpl.saude                           AS saude,")
        .append("  aspsacpl.educacao                        AS educacao,")
        .append("  aspsacpl.socializacao                    AS socializacao,")
        .append("  aspsacpl.documentacao                    AS documentacao,")
        .append("  aspsacpl.familia_acolhedora              AS familiaAcolhedora,")
        .append("  aspsacpl.familia_natural                 AS familiaNatural,")
        .append("  aspsacpl.familia_extensa                 AS familiaExtensa,")
        .append("  aspsacav.servico_social                  AS servicoSocial,")
        .append("  aspsacav.psicologia                      AS psicologia,")
        .append("  aspsac.saude_observacao                  AS obsSaude,")
        .append("  aspsac.rede_relacionamento               AS redeRelacionamento,")
        .append("  aspsac.atividades                        AS atividades,")
        .append("  aspsac.instituicao_religiosa             AS instituicaoReligiosa,")
        .append("  aspsac.trabalho_observacao               AS obsTrabalho,")
        .append("  CASE usu.as_cond_ocupacao")
        .append("  WHEN 101")
        .append("    THEN 'Não Trabalha'")
        .append("  WHEN 1")
        .append("    THEN 'Trabalhador por conta própria (bico, autônomo)'")
        .append("  WHEN 2")
        .append("    THEN 'Trabalhador temporário em área rural'")
        .append("  WHEN 3")
        .append("    THEN 'Empregado sem carteira de trabalho assinada'")
        .append("  WHEN 4")
        .append("    THEN 'Empregado com carteira de trabalho assinada'")
        .append("  WHEN 5")
        .append("    THEN 'Trabalhador doméstico sem carteira de trabalho assinada'")
        .append("  WHEN 6")
        .append("    THEN 'Trabalhador doméstico com carteira de trabalho assinada'")
        .append("  WHEN 7")
        .append("    THEN 'Trabalhador não-remunerado'")
        .append("  WHEN 8")
        .append("    THEN 'Militar ou servidor público'")
        .append("  WHEN 9")
        .append("    THEN 'Empregador'")
        .append("  WHEN 10")
        .append("    THEN 'Estagiário'")
        .append("  WHEN 11")
        .append("    THEN 'Aprendiz (em condição legal)'")
        .append("  WHEN 12")
        .append("    THEN 'Aposentado'")
        .append("  WHEN 13")
        .append("    THEN 'Pensionista'")
        .append("  ELSE 'Não Informado'")
        .append("  END                                     AS ocupacao,")
        .append("  usu.as_nome_empresa                     AS empresa,")
        .append("  usu.as_periodo_inicial_empresa          AS dataInicioEmpresa,")
        .append("  usu.as_nome_escola                      AS escola,")
        .append("  usu.as_possui_problema_saude            AS problemaSaude,")
        .append("  usu.as_faz_tratamento                   AS fazTratamento,")
        .append("  usu.as_tratamento                       AS descricaoTratamento,")
        .append("  usu.as_usa_medicamento                  AS usaMedicamento,")
        .append("  usu.as_medicamento                      AS descricaoMedicamento,")
        .append("  usu.usu_as_drogado                      AS usaDroga,")
        .append("  usu.usu_substancia_utilizada            AS descricaoDroga,")
        .append("  aaep.aspsaep_servicos_beneficios        AS servicosBeneficios,")
        .append("  aaep.aspsaep_descricao_familia          AS historicoVida")
        .append(" FROM asps_hist_acolhimento aspsha")
        .append("  JOIN usuario usu ON aspsha.usu_codigo = usu.usu_codigo")
        .append("  JOIN asps_acolhimento_inscricao aspsai ON aspsha.aspsai_codigo = aspsai.aspsai_codigo")
        .append("  JOIN usuario responsavel ON responsavel.usu_codigo = aspsai.aspsai_responsavel_principal")
        .append("  LEFT JOIN raca rac ON rac.rac_codigo = usu.rac_codigo")
        .append("  LEFT JOIN cidade cid ON cid.cid_codigo = usu.cid_codigo_nasc")
        .append("  LEFT JOIN asps_acolhidos_dados aspsac ON aspsac.usu_codigo = aspsha.usu_codigo")
        .append("  LEFT JOIN asps_acolhidos_parecer aspsacpr")
        .append("    ON aspsacpr.usu_codigo = aspsha.usu_codigo")
        .append("       AND aspsacpr.aspsai_codigo = aspsha.aspsai_codigo")
        .append("  LEFT JOIN asps_acolhidos_plano aspsacpl")
        .append("    ON aspsacpl.usu_codigo = aspsha.usu_codigo")
        .append("       AND aspsacpl.aspsai_codigo = aspsha.aspsai_codigo")
        .append("  LEFT JOIN asps_acolhidos_avaliacao aspsacav")
        .append("    ON aspsacav.usu_codigo = aspsha.usu_codigo")
        .append("       AND aspsacav.aspsai_codigo = aspsha.aspsai_codigo")
        .append("  LEFT JOIN asps_acolhimento_estudo_psicosocial aaep ON aaep.aspsai_codigo = aspsha.aspsai_codigo")
        .append(" WHERE aspsha.aspsha_codigo = :aspshaCodigo;");

    return sb.toString();
  }

  public static String verificaOutroAcolhimento(){
    StringBuilder sb = new StringBuilder()
    .append(" SELECT aspsha_codigo   AS id,")
    .append("        aspsha_dtinicio AS inicioOutroServico,")
    .append("        aspsha_dtfinal  AS fimOutroServico")
    .append(" FROM asps_hist_acolhimento aspsha")
    .append(" WHERE usu_codigo = :usuCodigo AND aspsai_codigo IS NULL")
    .append(" ORDER BY aspsha.aspsha_dtinicio DESC")
    .append(" LIMIT 1");
    return sb.toString();
  }

  public static String verificaOutraFamiliaAcolhedora(){
    StringBuilder sb = new StringBuilder()
      .append(" SELECT aspsha_codigo   AS id,")
      .append("        aspsha_dtinicio AS inicioOutroServico,")
      .append("        aspsha_dtfinal  AS fimOutroServico")
      .append(" FROM asps_hist_acolhimento aspsha")
      .append(" WHERE usu_codigo = :usuCodigo AND aspsai_codigo <> :aspsaiCodigo")
      .append(" ORDER BY aspsha.aspsha_dtinicio DESC")
      .append(" LIMIT 1");
    return sb.toString();
  }

  public static String getSqlFamiliaNaturalExtensa(){
    StringBuilder sb = new StringBuilder()
      .append("SELECT")
      .append(" UPPER(p.descricao)                       AS parentesco,")
      .append(" aspsu.aspsu_parentesco                   AS codigoParentesco,")
      .append(" usu.usu_nome                             AS nome,")
      .append(" usu.usu_as_endereco                      AS endereco,")
      .append(" usu.usu_datanasc                         AS dataNascimento")
      .append(" FROM as_prontuario_suas asps")
      .append(" INNER JOIN as_prontuario_suas_usuario aspsu ON asps.asps_codigo = aspsu.asps_codigo ")
      .append(" INNER JOIN usuario usu ON aspsu.usu_codigo = usu.usu_codigo ")
      .append(" INNER JOIN as_parentesco p on p.id = aspsu.aspsu_parentesco ")
      .append("WHERE aspsu.aspsu_ativo IS TRUE")
      .append(" AND aspsu.aspsu_parentesco <> 1")
      .append(" AND asps.asps_codigo = :aspsCodigo")
      .append(" ORDER BY aspsu.aspsu_num_ordem ASC");
    return sb.toString();
  }

  public static String getSqlMedSocEduc(){
    StringBuilder sb = new StringBuilder("SELECT");
    sb.append(" aspsu.aspsu_num_ordem       AS ordem,")
      .append(" usu.usu_nome                AS nome,")
      .append(" astms.astms_nome            AS medida_socioeducativa,")
      .append(" aspsms.aspsms_num_processo  AS processo,")
      .append(" aspsms.aspsms_dtinicio      AS data_inicio,")
      .append(" aspsms.aspsms_dtfinal       AS data_final,")
      .append(" aspsms.aspsms_creas         AS atendido_creas")
      .append(" FROM asps_medidas_socioeducativas aspsms")
      .append(" JOIN usuario usu ON aspsms.usu_codigo=usu.usu_codigo")
      .append(" JOIN as_tipo_medida_socioeducativa astms ON astms.astms_codigo=aspsms.astms_codigo")
      .append(" JOIN as_prontuario_suas_usuario aspsu ON usu.usu_codigo=aspsu.usu_codigo")
      .append(" WHERE aspsms.usu_codigo = :usuCodigo");
    return sb.toString();
  }
}
