package br.com.centralit.citcorpore.negocio; import java.util.ArrayList; import java.util.Collection; import java.util.List; import br.com.centralit.bpm.dto.FluxoDTO; import br.com.centralit.bpm.dto.PermissoesFluxoDTO; import br.com.centralit.bpm.integracao.FluxoDao; import br.com.centralit.citcorpore.bean.GrupoDTO; import br.com.centralit.citcorpore.bean.UsuarioDTO; import br.com.centralit.citcorpore.integracao.PermissoesFluxoDao; import br.com.citframework.excecao.ServiceException; import br.com.citframework.service.CrudServiceImpl; import br.com.citframework.util.Reflexao; public class PermissoesFluxoServiceEjb extends CrudServiceImpl implements PermissoesFluxoService { private PermissoesFluxoDao dao; @Override protected PermissoesFluxoDao getDao() { if (dao == null) { dao = new PermissoesFluxoDao(); } return dao; } @Override public Collection findByIdTipoFluxo(final Integer parm) throws Exception { try { return this.getDao().findByIdTipoFluxo(parm); } catch (final Exception e) { throw new ServiceException(e); } } @Override public void deleteByIdTipoFluxo(final Integer parm) throws Exception { try { this.getDao().deleteByIdTipoFluxo(parm); } catch (final Exception e) { throw new ServiceException(e); } } @Override public Collection findByIdGrupo(final Integer parm) throws Exception { try { return this.getDao().findByIdGrupo(parm); } catch (final Exception e) { throw new ServiceException(e); } } @Override public void deleteByIdGrupo(final Integer parm) throws Exception { try { this.getDao().deleteByIdGrupo(parm); } catch (final Exception e) { throw new ServiceException(e); } } @Override public Collection<FluxoDTO> findFluxosByUsuario(final UsuarioDTO usuarioDto) throws Exception { final Collection<FluxoDTO> result = new ArrayList<>(); if (usuarioDto.getColGrupos() != null) { for (final GrupoDTO grupoDto : usuarioDto.getColGrupos()) { final Collection<PermissoesFluxoDTO> colAux = this.findByIdGrupo(grupoDto.getIdGrupo()); if (colAux != null) { final FluxoDao fluxoDao = new FluxoDao(); for (final PermissoesFluxoDTO permissoesFluxoDto : colAux) { final FluxoDTO fluxoDto = fluxoDao.findByTipoFluxo(permissoesFluxoDto.getIdTipoFluxo()); if (fluxoDto != null) { Reflexao.copyPropertyValues(permissoesFluxoDto, fluxoDto); fluxoDto.setConteudoXml(null); result.add(fluxoDto); } } } } } return result; } @Override public PermissoesFluxoDTO findByUsuarioAndFluxo(final UsuarioDTO usuarioDto, final FluxoDTO fluxoDto) throws Exception { PermissoesFluxoDTO permissoesDto = null; if (usuarioDto.getColGrupos() != null && fluxoDto != null) { String criar = "N"; String executar = "N"; String delegar = "N"; String suspender = "N"; String reativar = "N"; String alterarSLA = "N"; String reabrir = "N"; for (final GrupoDTO grupoDto : usuarioDto.getColGrupos()) { // TODO final Collection<PermissoesFluxoDTO> colPermissoes = this.findByIdGrupo(grupoDto.getIdGrupo()); if (colPermissoes != null) { final FluxoDao fluxoDao = new FluxoDao(); for (final PermissoesFluxoDTO permissoesAuxDto : colPermissoes) { // TODO final FluxoDTO fluxoAuxDto = fluxoDao.findByTipoFluxo(permissoesAuxDto.getIdTipoFluxo()); if (fluxoAuxDto != null && fluxoAuxDto.getIdFluxo().intValue() == fluxoDto.getIdFluxo().intValue()) { if (permissoesDto == null) { permissoesDto = permissoesAuxDto; } if (permissoesAuxDto.getCriar() != null && permissoesAuxDto.getCriar().equalsIgnoreCase("S")) { criar = "S"; } if (permissoesAuxDto.getExecutar() != null && permissoesAuxDto.getExecutar().equalsIgnoreCase("S")) { executar = "S"; } if (permissoesAuxDto.getDelegar() != null && permissoesAuxDto.getDelegar().equalsIgnoreCase("S")) { delegar = "S"; } if (permissoesAuxDto.getSuspender() != null && permissoesAuxDto.getSuspender().equalsIgnoreCase("S")) { suspender = "S"; } if (permissoesAuxDto.getReativar() != null && permissoesAuxDto.getReativar().equalsIgnoreCase("S")) { reativar = "S"; } if (permissoesAuxDto.getSuspender() != null && permissoesAuxDto.getSuspender().equalsIgnoreCase("S")) { suspender = "S"; } if (permissoesAuxDto.getAlterarSLA() != null && permissoesAuxDto.getAlterarSLA().equalsIgnoreCase("S")) { alterarSLA = "S"; } if (permissoesAuxDto.getReabrir() != null && permissoesAuxDto.getReabrir().equalsIgnoreCase("S")) { reabrir = "S"; } } } } } if (permissoesDto != null) { // Retorna as permiss�es para o fluxo, independentemente do grupo permissoesDto.setIdGrupo(null); permissoesDto.setCriar(criar); permissoesDto.setExecutar(executar); permissoesDto.setDelegar(delegar); permissoesDto.setSuspender(suspender); permissoesDto.setReativar(reativar); permissoesDto.setSuspender(suspender); permissoesDto.setAlterarSLA(alterarSLA); permissoesDto.setReabrir(reabrir); } } return permissoesDto; } @Override public PermissoesFluxoDTO findByIdFluxoAndIdUsuario(final Integer idUsuario, final Integer idItemtrabalho) { final PermissoesFluxoDTO permissoesDto = new PermissoesFluxoDTO(); permissoesDto.setIdGrupo(null); permissoesDto.setCriar("N"); permissoesDto.setExecutar("N"); permissoesDto.setDelegar("N"); permissoesDto.setSuspender("N"); permissoesDto.setReativar("N"); permissoesDto.setSuspender("N"); permissoesDto.setAlterarSLA("N"); permissoesDto.setReabrir("N"); try { final List<PermissoesFluxoDTO> listPermissoes = this.getDao().findByIdFluxoAndIdUsuario(idUsuario, idItemtrabalho); for (final PermissoesFluxoDTO permissoesAuxDto : listPermissoes) { if (permissoesAuxDto.getCriar() != null && permissoesAuxDto.getCriar().equalsIgnoreCase("S")) { permissoesDto.setCriar("S"); } if (permissoesAuxDto.getExecutar() != null && permissoesAuxDto.getExecutar().equalsIgnoreCase("S")) { permissoesDto.setExecutar("S"); } if (permissoesAuxDto.getDelegar() != null && permissoesAuxDto.getDelegar().equalsIgnoreCase("S")) { permissoesDto.setDelegar("S"); } if (permissoesAuxDto.getSuspender() != null && permissoesAuxDto.getSuspender().equalsIgnoreCase("S")) { permissoesDto.setSuspender("S"); } if (permissoesAuxDto.getReativar() != null && permissoesAuxDto.getReativar().equalsIgnoreCase("S")) { permissoesDto.setReativar("S"); } if (permissoesAuxDto.getAlterarSLA() != null && permissoesAuxDto.getAlterarSLA().equalsIgnoreCase("S")) { permissoesDto.setAlterarSLA("S"); } if (permissoesAuxDto.getReabrir() != null && permissoesAuxDto.getReabrir().equalsIgnoreCase("S")) { permissoesDto.setReabrir("S"); } } } catch (final Exception e) { e.printStackTrace(); } return permissoesDto; } @Override public boolean permissaoGrupoExecutor(final Integer idTipoMudanca, final Integer idGrupoExecutor) throws Exception { return this.getDao().permissaoGrupoExecutor(idTipoMudanca, idGrupoExecutor); } @Override public boolean permissaoGrupoExecutorLiberacao(final Integer idTipoMudanca, final Integer idGrupoExecutor) throws Exception { return this.getDao().permissaoGrupoExecutorLiberacao(idTipoMudanca, idGrupoExecutor); } @Override public boolean permissaoGrupoExecutorProblema(final Integer idCategoriaProblema, final Integer idGrupoExecutor) throws Exception { return this.getDao().permissaoGrupoExecutorProblema(idCategoriaProblema, idGrupoExecutor); } @Override public boolean permissaoGrupoExecutorLiberacaoServico(final Integer idCategoriaProblema, final Integer idGrupoExecutor) throws Exception { return this.getDao().permissaoGrupoExecutorLiberacaoServico(idCategoriaProblema, idGrupoExecutor); } }