//PERMISSAO DE ACESSO DA PARTE DE REGISTRO DE MONITORAMENTO
int qtdePeriodosAnteriores = 1;
Collection periodosConsiderados = new ArrayList();
AcompReferenciaItemAri ari = null;
ItemEstruturaIett item = null;
AcompReferenciaAref acompReferencia = null;
TipoAcompanhamentoTa tipoAcompanhamento = null;
List tpfaOrdenadosPorEstrutura = null;
TipoFuncAcompDao tipoFuncAcompDao = new TipoFuncAcompDao(null);
EstruturaAcessoDao estruturaAcessoDao = new EstruturaAcessoDao(null);
AcompReferenciaDao acompReferenciaDao = new AcompReferenciaDao(null);
AcompReferenciaItemDao ariDao = new AcompReferenciaItemDao(null);
TipoAcompanhamentoDao taDao = new TipoAcompanhamentoDao(null);
ItemEstUsutpfuacDao itemEstUsuDao = new ItemEstUsutpfuacDao(null);
AcompReferenciaItemDao acompReferenciaItemDao = new AcompReferenciaItemDao(null);
boolean usuarioLogadoEmiteParecer = false;
boolean permissaoLapis = false;
boolean permissaoAdministradorAcompanhamento = false;
Iterator itPeriodosAcao = null;
Map mapAcao = null;
UsuarioUsu usuario = seguranca.getUsuario();
try {
try {
if(codTipoAcompanhamento != null && !codTipoAcompanhamento.equals("")) {
tipoAcompanhamento = (TipoAcompanhamentoTa) taDao.buscar(TipoAcompanhamentoTa.class, Long.valueOf(codTipoAcompanhamento));
permissaoAdministradorAcompanhamento = estruturaAcessoDao.temPermissoesAcessoAcomp(tipoAcompanhamento, seguranca.getGruposAcesso());
}
} catch(Exception e) {
//NAO EXISTE O TIPO DE ACOMPANHAMENTO;
throw new PermissaoAcessoLinkException(ErroPermissaoAcessoLinkEnum.TIPO_DE_ACOMPANHAMENTO_INEXISTENTE);
}
try {
if(referencia_hidden != null && !referencia_hidden.equals("")) {
periodosConsiderados = acompReferenciaDao.getPeriodosAnterioresOrdenado(Long.valueOf(referencia_hidden), qtdePeriodosAnteriores,
Long.valueOf(codTipoAcompanhamento), false);
}
} catch(Exception e) {
//NAO EXISTE A REFERENCIA;
throw new PermissaoAcessoLinkException(ErroPermissaoAcessoLinkEnum.REFERENCIA_INEXISTENTE);
}
try{
// Busca cole��o com o per�odo a ser considereado
if(codAri != null && !codAri.equals("")) {
ari = (AcompReferenciaItemAri) ariDao.buscar(AcompReferenciaItemAri.class, Long.valueOf(codAri));
item = ari.getItemEstruturaIett();
}
} catch(Exception e) {
//NAO EXISTE O ACOMPANHAMENTO;
throw new PermissaoAcessoLinkException(ErroPermissaoAcessoLinkEnum.ACOMPANHAMENTO_INEXISTENTE);
}
if (item.getIndAtivoIett() == null || "".equals(item.getIndAtivoIett().trim()) || "N".equals(item.getIndAtivoIett().toUpperCase())) {
//O ITEM EST� INATIVO;
throw new PermissaoAcessoLinkException(ErroPermissaoAcessoLinkEnum.ITEM_INATIVO);
//verifica se o usu�rio pode "Gerar Per�odo de Acompanhamento"
} else if(permissaoAdministradorAcompanhamento) {
permissaoLapis = true;
} else {
itPeriodosAcao = periodosConsiderados.iterator();
mapAcao = acompReferenciaItemDao.criarMapPeriodoAri(periodosConsiderados, item);
tpfaOrdenadosPorEstrutura = tipoFuncAcompDao.getFuncaoAcompOrderByEstruturas();
if(itPeriodosAcao != null && itPeriodosAcao.hasNext()) {
//Pega s� o per�odo selecionado (Aref), que � o primeiro
acompReferencia = (AcompReferenciaAref) itPeriodosAcao.next();
if(!mapAcao.isEmpty() && mapAcao.containsKey(acompReferencia)) {
AcompReferenciaItemAri ariAcao = (AcompReferenciaItemAri) mapAcao.get(acompReferencia);
//Pega os Arels do Ari selecionado
List relatorios = acompReferenciaItemDao.getAcompRelatorioArelOrderByFuncaoAcomp(ariAcao, tpfaOrdenadosPorEstrutura);
Iterator itRelatorios = relatorios.iterator();
if(itRelatorios != null) {
while(itRelatorios.hasNext()){
AcompRelatorioArel relatorio = (AcompRelatorioArel) itRelatorios.next();
ItemEstUsutpfuacIettutfa itemEstUsu
= itemEstUsuDao.buscar(item.getCodIett(), relatorio.getTipoFuncAcompTpfa().getCodTpfa());
//Verifica se a permiss�o � de grupo ou usu�rio
if(itemEstUsu!=null && usuario != null) {
if (itemEstUsu.getUsuarioUsu() != null) {
usuarioLogadoEmiteParecer = itemEstUsu.getUsuarioUsu().getCodUsu().equals(usuario.getCodUsu());