/*
   * Esta função é responsável por preencher um objeto do relatório de TotalNaoDoacaoInstituição.
   */
  public TotalNaoDoacaoInstituicao relatorioTotalNaoDoacaoInstituicao(
      Long id, Calendar dataInicio, Calendar dataFinal) {

    InstituicaoNotificadora in = instituicaoNotificadoraRepository.findOne(id);
    TotalNaoDoacaoInstituicao td = new TotalNaoDoacaoInstituicao();

    td.setNome(in.getNome());

    td.setRecusaFamiliar(quantNaoDoacao(dataInicio, dataFinal, id, RECUSA_FAMILIAR));

    td.setContraInd(quantNaoDoacao(dataInicio, dataFinal, id, CONTRAINDICACAO_MEDICA));

    td.setProblema(quantNaoDoacao(dataInicio, dataFinal, id, PROBLEMAS_LOGISTICOS));

    td.setTotal(td.getContraInd() + td.getProblema() + td.getRecusaFamiliar());

    return td;
  }
  public TotalDoacaoInstituicao relatorioTotalDoacaoInstituicao(
      Long id, Calendar datIni, Calendar datFim) {

    InstituicaoNotificadora in = instituicaoNotificadoraRepository.findOne(id);
    TotalDoacaoInstituicao td = new TotalDoacaoInstituicao();

    td.setNomeInstituicao(in.getNome());
    td.setNumeroNotificacao(quantidadeNotificacoes(id, datIni, datFim));
    td.setNumeroDoacao(quantidadeDoacao(id, datIni, datFim));
    td.setNumeroEntrevista(quantidadeEntrevista(id, datIni, datFim));
    td.setNumeroRecusa(quantidadeRecusa(id, datIni, datFim));

    if (td.getNumeroDoacao() == 0 || td.getNumeroNotificacao() == 0) {
      td.setPercentualEfetivacao(new BigDecimal(0.00));
    } else {
      td.setPercentualEfetivacao(
          percentualEfetivacao(td.getNumeroDoacao(), td.getNumeroNotificacao()));
    }
    return td;
  }