package br.com.elotech.scripts;

import br.com.elotech.commom.Util;
import br.com.elotech.model.arquivo.Arquivo;
import br.com.elotech.model.arquivo.Reg00;
import br.com.elotech.model.arquivo.Reg98;
import br.com.elotech.model.arquivo.Reg99;
import org.apache.commons.lang3.StringUtils;

import java.util.HashMap;
import java.util.Map;

/**
 * User: claiton.nazaret
 * Date: 26/02/2019
 * Time: 11:55
 */
public abstract class ScriptArquivo {

  private static StringBuilder builder;

  public static String getInsertArquivo() {
    builder = new StringBuilder();
    builder.append("INSERT INTO caduni_arquivo (")
      .append(" arquivo, ")
      .append(" dt_importacao, ")
      .append(" nomArquivoHdr, ")
      .append(" codVersaoLayoutHdr, ")
      .append(" dtaPosicaoCadastroHdr, ")
      .append(" dtaExtracaoDadosHdr, ")
      .append(" chvNaturalPrefeitura, ")
      .append(" codMunicIbge2Pre, ")
      .append(" codMunicIbge5Pre, ")
      .append(" indMigracaoPre, ")
      .append(" nomPrefeituraPre, ")
      .append(" qtdReg00Tlr, qtdReg01Tlr, ")
      .append(" qtdReg02Tlr, qtdReg03Tlr, ")
      .append(" qtdReg04Tlr, qtdReg05Tlr, ")
      .append(" qtdReg06Tlr, qtdReg07Tlr, ")
      .append(" qtdReg08Tlr, qtdReg09Tlr, ")
      .append(" qtdReg10Tlr, qtdReg11Tlr, ")
      .append(" qtdReg12Tlr, qtdReg13Tlr, ")
      .append(" qtdReg14Tlr, qtdReg15Tlr, ")
      .append(" qtdReg16Tlr, qtdReg17Tlr, ")
      .append(" qtdReg18Tlr, qtdReg19Tlr, ")
      .append(" qtdReg98Tlr, qtdReg99Tlr) ")
      .append("VALUES ( ")
      .append(" :arquivo, :dt_importacao, :nomArquivoHdr, :codVersaoLayoutHdr, :dtaPosicaoCadastroHdr, ")
      .append(" :dtaExtracaoDadosHdr, :chvNaturalPrefeitura, :codMunicIbge2Pre, :codMunicIbge5Pre, ")
      .append(" :indMigracaoPre, :nomPrefeituraPre, :qtdReg00Tlr, :qtdReg01Tlr, :qtdReg02Tlr, ")
      .append(" :qtdReg03Tlr, :qtdReg04Tlr, :qtdReg05Tlr, :qtdReg06Tlr, :qtdReg07Tlr, :qtdReg08Tlr, ")
      .append(" :qtdReg09Tlr, :qtdReg10Tlr, :qtdReg11Tlr, :qtdReg12Tlr, :qtdReg13Tlr, :qtdReg14Tlr, ")
      .append(" :qtdReg15Tlr, :qtdReg16Tlr, :qtdReg17Tlr, :qtdReg18Tlr, :qtdReg19Tlr, ")
      .append(" :qtdReg98Tlr, :qtdReg99Tlr)");
    return builder.toString();
  }

  public static Map<String, Object> getParamArquivo(Arquivo arquivo) {
    Reg00 r00 = arquivo.getReg00();
    Reg98 r98 = arquivo.getReg98();
    Reg99 r99 = arquivo.getReg99();

    Map<String, Object> param = new HashMap<>();
    param.put("arquivo", arquivo.getArquivo());
    param.put("dt_importacao", Util.dateToTimeStamp(arquivo.getDtImportacao()));

    param.put("nomArquivoHdr", r00.getNomArquivoHdr());
    param.put("codVersaoLayoutHdr", r00.getCodVersaoLayoutHdr());
    param.put("dtaPosicaoCadastroHdr", Util.dateToTimeStamp(r00.getDtaPosicaoCadastroHdr()));
    param.put("dtaExtracaoDadosHdr", Util.dateToTimeStamp(r00.getDtaExtracaoDadosHdr()));

    param.put("chvNaturalPrefeitura", r98.getChvNaturalPrefeitura());
    param.put("codMunicIbge2Pre", r98.getCodMunicIbge2Pre());
    param.put("codMunicIbge5Pre", r98.getCodMunicIbge5Pre());
    param.put("indMigracaoPre",   r98.getIndMigracaoPre());
    param.put("nomPrefeituraPre", r98.getNomPrefeituraPre());

    param.put("qtdReg00Tlr", r99.getQtdReg00Tlr());
    param.put("qtdReg01Tlr", r99.getQtdReg01Tlr());
    param.put("qtdReg02Tlr", r99.getQtdReg02Tlr());
    param.put("qtdReg03Tlr", r99.getQtdReg03Tlr());
    param.put("qtdReg04Tlr", r99.getQtdReg04Tlr());
    param.put("qtdReg05Tlr", r99.getQtdReg05Tlr());
    param.put("qtdReg06Tlr", r99.getQtdReg06Tlr());
    param.put("qtdReg07Tlr", r99.getQtdReg07Tlr());
    param.put("qtdReg08Tlr", r99.getQtdReg08Tlr());
    param.put("qtdReg09Tlr", r99.getQtdReg09Tlr());
    param.put("qtdReg10Tlr", r99.getQtdReg10Tlr());
    param.put("qtdReg11Tlr", r99.getQtdReg11Tlr());
    param.put("qtdReg12Tlr", r99.getQtdReg12Tlr());
    param.put("qtdReg13Tlr", r99.getQtdReg13Tlr());
    param.put("qtdReg14Tlr", r99.getQtdReg14Tlr());
    param.put("qtdReg15Tlr", r99.getQtdReg15Tlr());
    param.put("qtdReg16Tlr", r99.getQtdReg16Tlr());
    param.put("qtdReg17Tlr", r99.getQtdReg17Tlr());
    param.put("qtdReg18Tlr", r99.getQtdReg18Tlr());
    param.put("qtdReg19Tlr", r99.getQtdReg19Tlr());
    param.put("qtdReg98Tlr", r99.getQtdReg98Tlr());
    param.put("qtdReg99Tl",  r99.getQtdReg99Tlr());
    return param;
  }
}
