package br.com.elotech.saude.scripts;

import br.com.elotech.saude.model.filters.farmacia.ConsultaDadosHorusFilter;

public abstract class ConsultaDadosHorusScript {

  public static String getSql(ConsultaDadosHorusFilter consultaDadosHorusFilter) {
    StringBuilder builder = new StringBuilder();

    builder.append("SELECT hp.hp_data AS data, "
      + "                  hp.hp_tipo_registro AS tipoRegistro, "
      + "                  hp.hp_nu_protocolo AS numProtocolo, "
      + "                  hp.mov_codigo AS codMovimentacao, "
      + "                  usr.usr_nome AS responsavelEnvio, "
      + "                  pro.pro_horus AS catmat, "
      + "                  ite.ite_quantidade AS quantidade "
      + "             FROM horus_protocolo hp "
      + "        LEFT JOIN movimento mov ON mov.mov_codigo = hp.mov_codigo "
      + "        LEFT JOIN usuarios usr ON mov.usr_codigo = usr.usr_codigo "
      + "        LEFT JOIN itens_movimento ite ON ite.mov_codigo = mov.mov_codigo "
      + "        LEFT JOIN produto pro ON pro.pro_codigo = ite.pro_codigo"
      + " WHERE hp.hp_data BETWEEN :dataInicial AND :dataFinal "
      + " AND hp.hp_tipo_registro IN (");

      for (String s : consultaDadosHorusFilter.getTiposRegistros()) {
        builder.append("'").append(s).append("',");
      }

      builder.deleteCharAt(builder.length()-1);
      builder.append(")");

    return builder.toString();
  }
}
