package br.com.elotech.social.scripts;

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

public class CidadaosCadastradosScript {

    private static StringBuilder sb;

    public static String getSqlCidadaosCadastrados(CidadaosCadastradosFilter filter){
        sb = new StringBuilder("SELECT usuario.usu_nome AS usuNome, ");
        sb.append("usuario.usu_data_cad AS dataCadastro, ")
          .append("unidade.uni_desc AS nomeUnidade, ")
          .append("usuarios.usr_nome AS nomeProfissional ")
          .append("FROM usuario ")
          .append("INNER JOIN unidade ON unidade.uni_codigo = usuario.uni_cadastro_codigo ")
          .append("INNER JOIN usuarios ON usuarios.usr_codigo = usuario.usr_cadastro_codigo ")
          .append("WHERE usuario.uni_cadastro_codigo = :uniCodigo ");

        if (filter.getProfissional() != null) {
            sb.append("AND usuario.usr_cadastro_codigo = :profissional ");
        }

        if (filter.getDtInicial() != null) {
            sb.append("AND usuario.usu_data_cad >= :dtInicial ");
        }

        if (filter.getDtFinal() != null) {
            sb.append("AND usuario.usu_data_cad <= :dtFinal ");
        }

        if (filter.getCidadao() != null) {
            sb.append("AND usuario.usu_codigo = :cidadao ");
        }

        sb.append("GROUP BY unidade.uni_desc, usuarios.usr_nome, usuario.usu_nome, usuario.usu_data_cad ");
        sb.append("ORDER BY usuarios.usr_nome, usuario.usu_nome");

        return sb.toString();
    }
}
