package br.com.elotech.social.scripts;

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

public class AtividadeColetivaInscricaoAbertaScript {

    private static String subUnidades = "(SELECT unidade.uni_codigo FROM unidade"
            + "   JOIN unidade_usuarios ON unidade.uni_codigo = unidade_usuarios.uni_codigo "
            + "  WHERE unidade_usuarios.usr_codigo = :usr_codigo"
            + "    AND unidade.uni_as is not null) ";

    public static String getSqlAtividadeColetivaInscricaoAberta(AtividadeColetivaInscricaoAbertaFilter filter){
        StringBuilder compl = new StringBuilder(" WHERE 1=1");
        compl.append("   AND uni.uni_codigo IN ".concat(subUnidades));
        if(filter.getAsag_status().contains("t")){
            compl.append(" AND asag.asag_status is TRUE");
        }else if (filter.getAsag_status().contains("f")) {
            compl.append(" AND asag.asag_status is FALSE");
        }
        if(filter.getUniCodigo() != null){
         compl.append(" AND uni.uni_codigo = :unidade");
        }


      StringBuilder sb = new StringBuilder("SELECT");
        sb.append(" asag.asag_codigo,")
          .append(" (SELECT count (*)")
          .append(" FROM as_atendimentocol_participantes AS asapar")
          .append(" INNER JOIN as_atendimentocol_grupo AS asag2 ON asapar.asag_codigo = asag2.asag_codigo")
          .append(" WHERE asapar.asag_codigo = asag.asag_codigo AND asapar.asapar_status = 't') as gruQtdeVagasOcupadas,")
          .append(" asag.asag_titulo,")
          .append(" asag.asag_data,")
          .append(" asag.asag_status,")
          .append("  asag.asag_quantidade_grupo,")
          .append(" uni.uni_desc,")
          .append(" UPPER(asap.asap_titulo) as programa")
          .append(" FROM as_atendimentocol_grupo AS asag")
          .append(" INNER JOIN unidade AS uni ON asag.uni_codigo = uni.uni_codigo")
          .append(" INNER JOIN as_atendimentocol_programas AS asap ON asag.asap_codigo = asap.asap_codigo");
        sb.append(compl);
        sb.append(" ORDER BY uni.uni_desc, asag.asag_codigo");

        return sb.toString();

    }
}
