package br.com.centralit.citcorpore.bpm.negocio; import java.sql.Date; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.lang.StringUtils; import br.com.centralit.bpm.dto.AtribuicaoFluxoDTO; import br.com.centralit.bpm.dto.EventoFluxoDTO; import br.com.centralit.bpm.dto.FluxoDTO; import br.com.centralit.bpm.dto.InstanciaFluxoDTO; import br.com.centralit.bpm.dto.ObjetoNegocioFluxoDTO; import br.com.centralit.bpm.dto.TarefaFluxoDTO; import br.com.centralit.bpm.dto.TipoFluxoDTO; import br.com.centralit.bpm.integracao.AtribuicaoFluxoDao; import br.com.centralit.bpm.integracao.FluxoDao; import br.com.centralit.bpm.integracao.TipoFluxoDao; import br.com.centralit.bpm.negocio.ExecucaoFluxo; import br.com.centralit.bpm.negocio.InstanciaFluxo; import br.com.centralit.bpm.negocio.ItemTrabalho; import br.com.centralit.bpm.util.Enumerados; import br.com.centralit.bpm.util.Enumerados.TipoAtribuicao; import br.com.centralit.citcorpore.bean.CalculoJornadaDTO; import br.com.centralit.citcorpore.bean.EmpregadoDTO; import br.com.centralit.citcorpore.bean.ExecucaoMudancaDTO; import br.com.centralit.citcorpore.bean.GrupoDTO; import br.com.centralit.citcorpore.bean.ModeloEmailDTO; import br.com.centralit.citcorpore.bean.OcorrenciaMudancaDTO; import br.com.centralit.citcorpore.bean.ReaberturaMudancaDTO; import br.com.centralit.citcorpore.bean.RequisicaoMudancaDTO; import br.com.centralit.citcorpore.bean.TipoMudancaDTO; import br.com.centralit.citcorpore.bean.UsuarioDTO; import br.com.centralit.citcorpore.integracao.ExecucaoMudancaDao; import br.com.centralit.citcorpore.integracao.GrupoDao; import br.com.centralit.citcorpore.integracao.ModeloEmailDao; import br.com.centralit.citcorpore.integracao.OcorrenciaMudancaDao; import br.com.centralit.citcorpore.integracao.ReaberturaMudancaDao; import br.com.centralit.citcorpore.integracao.RequisicaoMudancaDao; import br.com.centralit.citcorpore.integracao.TipoMudancaDAO; import br.com.centralit.citcorpore.integracao.UsuarioDao; import br.com.centralit.citcorpore.mail.MensagemEmail; import br.com.centralit.citcorpore.negocio.CalendarioServiceEjb; import br.com.centralit.citcorpore.negocio.EmpregadoService; import br.com.centralit.citcorpore.negocio.GrupoEmailService; import br.com.centralit.citcorpore.negocio.GrupoService; import br.com.centralit.citcorpore.negocio.RequisicaoMudancaServiceEjb; import br.com.centralit.citcorpore.util.Enumerados.FaseRequisicaoMudanca; import br.com.centralit.citcorpore.util.Enumerados.ParametroSistema; import br.com.centralit.citcorpore.util.Enumerados.SituacaoRequisicaoMudanca; import br.com.centralit.citcorpore.util.ParametroUtil; import br.com.centralit.citcorpore.util.Util; import br.com.citframework.comparacao.ObjectSimpleComparator; import br.com.citframework.dto.IDto; import br.com.citframework.dto.Usuario; import br.com.citframework.excecao.LogicException; import br.com.citframework.excecao.ServiceException; import br.com.citframework.integracao.TransactionControler; import br.com.citframework.integracao.TransactionControlerImpl; import br.com.citframework.service.ServiceLocator; import br.com.citframework.util.UtilDatas; import com.google.gson.Gson; @SuppressWarnings({"unchecked","rawtypes","unused"}) public class ExecucaoMudanca extends ExecucaoFluxo { private UsuarioDTO usuarioDto = null; public ExecucaoMudanca(TransactionControler tc) { super(tc); } public ExecucaoMudanca() { super(); } public ExecucaoMudanca(RequisicaoMudancaDTO requisicaoMudancaDto, TransactionControler tc, Usuario usuario) { super(requisicaoMudancaDto, tc, usuario); } // public ExecucaoMudanca(RequisicaoMudancaDTO requisicaoMudancaDto, TransactionControler tc) { // super(requisicaoMudancaDto, tc); // } @Override public InstanciaFluxo inicia(String nomeFluxo, Integer idFase) throws Exception { TipoFluxoDao tipoFluxoDao = new TipoFluxoDao(); TipoFluxoDTO tipoFluxoDto = tipoFluxoDao.findByNome(nomeFluxo); if (tipoFluxoDto == null){ System.out.println("Fluxo "+nomeFluxo+" n�o existe"); throw new LogicException(i18n_Message("citcorpore.comum.fluxoNaoEncontrado")); } return inicia(new FluxoDao().findByTipoFluxo(tipoFluxoDto.getIdTipoFluxo()), idFase); } @Override public InstanciaFluxo inicia() throws Exception { if (getRequisicaoMudancaDto().getIdTipoMudanca() == null) throw new LogicException(i18n_Message("requisicaoMudanca.tipoNaoDefinido")); InstanciaFluxo result = null; InstanciaFluxoDTO instanciaFluxoDto = null; TipoMudancaDTO tipoMudancaDto = recuperaTipoMudanca(); if (tipoMudancaDto.getIdTipoFluxo() != null){ result = inicia(new FluxoDao().findByTipoFluxo(tipoMudancaDto.getIdTipoFluxo()), null); }else{ String fluxoPadrao = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.FLUXO_PADRAO_MUDANCAS, null); if (fluxoPadrao == null) throw new LogicException(i18n_Message("citcorpore.comum.fluxoNaoParametrizado")); result = inicia(fluxoPadrao, null); } try { String enviarNotificacao = ParametroUtil.getValor(ParametroSistema.NOTIFICAR_GRUPO_RECEPCAO_SOLICITACAO, getTransacao(), "N"); String IdModeloEmailGrupoDestinoREquisicaoMudanca = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.ID_MODELO_EMAIL_GRUPO_DESTINO_REQUISICAOMUDANCA, "30"); if (enviarNotificacao.equalsIgnoreCase("S") && getRequisicaoMudancaDto().escalada()) { enviaEmailGrupo(Integer.parseInt(IdModeloEmailGrupoDestinoREquisicaoMudanca.trim()),tipoMudancaDto.getIdGrupoExecutor()); } } catch (NumberFormatException e) { System.out.println("N�o h� modelo de e-mail setado nos par�metros."); } try { String IdModeloEmailGrupoComiteREquisicaoMudanca = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.ID_MODELO_EMAIL_GRUPO_COMITE_REQUISICAOMUDANCA, "29"); if (this.getRequisicaoMudancaDto().getEnviaEmailGrupoComite()!=null && this.getRequisicaoMudancaDto().getEnviaEmailGrupoComite().equalsIgnoreCase("S")) { enviaEmailGrupo(Integer.parseInt(IdModeloEmailGrupoComiteREquisicaoMudanca),this.getRequisicaoMudancaDto().getIdGrupoComite()); enviaEmailProprietario(Integer.parseInt(IdModeloEmailGrupoComiteREquisicaoMudanca.trim())); } } catch (NumberFormatException e) { System.out.println("N�o h� modelo de e-mail setado nos par�metros."); } return result; } @Override public InstanciaFluxo inicia(FluxoDTO fluxoDto, Integer idFase) throws Exception { if (fluxoDto == null) throw new LogicException(i18n_Message("citcorpore.comum.fluxoNaoEncontrado")); this.fluxoDto = fluxoDto; HashMap<String, Object> map = new HashMap(); mapObjetoNegocio(map); InstanciaFluxo instanciaFluxo = new InstanciaFluxo(this,map); ExecucaoMudancaDTO execucaoDto = new ExecucaoMudancaDTO(); execucaoDto.setIdRequisicaoMudanca(getRequisicaoMudancaDto().getIdRequisicaoMudanca()); execucaoDto.setIdFluxo(instanciaFluxo.getIdFluxo()); execucaoDto.setIdInstanciaFluxo(instanciaFluxo.getIdInstancia()); Integer seqReabertura = 0; if (getRequisicaoMudancaDto().getSeqReabertura() != null && getRequisicaoMudancaDto().getSeqReabertura().intValue() > 0) seqReabertura = getRequisicaoMudancaDto().getSeqReabertura(); if (seqReabertura.intValue() > 0) execucaoDto.setSeqReabertura(getRequisicaoMudancaDto().getSeqReabertura()); ExecucaoMudancaDao execucaoDao = new ExecucaoMudancaDao(); setTransacaoDao(execucaoDao); execucaoFluxoDto = (ExecucaoMudancaDTO) execucaoDao.create(execucaoDto); if (seqReabertura.intValue() == 0 && getRequisicaoMudancaDto().getEnviaEmailCriacao() != null && getRequisicaoMudancaDto().getEnviaEmailCriacao().equalsIgnoreCase("S")) { TipoMudancaDTO tipoMudancaDto = recuperaTipoMudanca(); enviaEmail(tipoMudancaDto.getIdModeloEmailCriacao()); } return instanciaFluxo; } public void finalizaItemRelacionadoMudanca(RequisicaoMudancaDTO requisicaoMudancaDTO ) throws ServiceException, Exception{ new RequisicaoMudancaServiceEjb().fechaRelacionamentoMudanca(super.getTransacao(), requisicaoMudancaDTO); } @Override public void executa(String loginUsuario, ObjetoNegocioFluxoDTO objetoNegocioDto, Integer idItemTrabalho, String acao, HashMap<String, Object> map) throws Exception { if (acao.equals(Enumerados.ACAO_DELEGAR)) return; TarefaFluxoDTO tarefaFluxoDto = recuperaTarefa(idItemTrabalho); if (tarefaFluxoDto == null) return; ExecucaoMudancaDao execucaoMudancaDao = new ExecucaoMudancaDao(); setTransacaoDao(execucaoMudancaDao); ExecucaoMudancaDTO execucaoMudancaDto = execucaoMudancaDao.findByIdInstanciaFluxo(tarefaFluxoDto.getIdInstancia()); if (execucaoMudancaDto == null) return; recuperaFluxo(execucaoMudancaDto.getIdFluxo()); this.objetoNegocioDto = objetoNegocioDto; usuarioDto = new UsuarioDao().restoreByLogin(loginUsuario); InstanciaFluxo instanciaFluxo = new InstanciaFluxo(this, tarefaFluxoDto.getIdInstancia()); mapObjetoNegocio(instanciaFluxo.getObjetos(map)); if (acao.equals(Enumerados.ACAO_INICIAR)) instanciaFluxo.iniciaItemTrabalho(loginUsuario, tarefaFluxoDto.getIdItemTrabalho(), map); else if (acao.equals(Enumerados.ACAO_EXECUTAR)) { tarefaFluxoDto = recuperaTarefa(idItemTrabalho); OcorrenciaMudancaDao ocorrenciaMudancaDao = new OcorrenciaMudancaDao(); setTransacaoDao(ocorrenciaMudancaDao); OcorrenciaMudancaDTO ocorrenciaMudancaDto = new OcorrenciaMudancaDTO(); ocorrenciaMudancaDto.setIdRequisicaoMudanca(getRequisicaoMudancaDto().getIdRequisicaoMudanca()); ocorrenciaMudancaDto.setDataregistro(UtilDatas.getDataAtual()); ocorrenciaMudancaDto.setHoraregistro(UtilDatas.formatHoraFormatadaStr(UtilDatas.getHoraAtual())); Long tempo = new Long(0); if (tarefaFluxoDto.getDataHoraFinalizacao() != null) tempo = (tarefaFluxoDto.getDataHoraFinalizacao().getTime() - tarefaFluxoDto.getDataHoraCriacao().getTime()) / 1000 / 60; ocorrenciaMudancaDto.setTempoGasto(tempo.intValue()); ocorrenciaMudancaDto.setDescricao(br.com.centralit.citcorpore.util.Enumerados.CategoriaOcorrencia.Execucao.getDescricao()); ocorrenciaMudancaDto.setDataInicio(UtilDatas.getDataAtual()); ocorrenciaMudancaDto.setDataFim(UtilDatas.getDataAtual()); ocorrenciaMudancaDto.setInformacoesContato("n�o se aplica"); ocorrenciaMudancaDto.setRegistradopor(loginUsuario); ocorrenciaMudancaDto.setDadosMudanca(new Gson().toJson(getRequisicaoMudancaDto())); ocorrenciaMudancaDto.setOcorrencia("Execu��o da tarefa \""+tarefaFluxoDto.getElementoFluxoDto().getDocumentacao()+"\""); ocorrenciaMudancaDto.setOrigem(br.com.centralit.citcorpore.util.Enumerados.OrigemOcorrencia.OUTROS.getSigla().toString()); ocorrenciaMudancaDto.setCategoria(br.com.centralit.citcorpore.util.Enumerados.CategoriaOcorrencia.Execucao.getSigla()); ocorrenciaMudancaDto.setIdItemTrabalho(idItemTrabalho); ocorrenciaMudancaDao.create(ocorrenciaMudancaDto); instanciaFluxo.executaItemTrabalho(loginUsuario, tarefaFluxoDto.getIdItemTrabalho(), map); if (getRequisicaoMudancaDto().getFase() != null && getRequisicaoMudancaDto().getFase().trim().length() > 0) { SituacaoRequisicaoMudanca novaSituacao = FaseRequisicaoMudanca.valueOf(getRequisicaoMudancaDto().getFase()).getSituacao(); if (novaSituacao != null) { RequisicaoMudancaDao requisicaoDao = new RequisicaoMudancaDao(); setTransacaoDao(requisicaoDao); getRequisicaoMudancaDto().setStatus(novaSituacao.name()); requisicaoDao.updateNotNull(getRequisicaoMudancaDto()); } } } if (getRequisicaoMudancaDto().getEnviaEmailAcoes() != null && getRequisicaoMudancaDto().getEnviaEmailAcoes().equalsIgnoreCase("S")) { getRequisicaoMudancaDto().setNomeTarefa(tarefaFluxoDto.getElementoFluxoDto().getDocumentacao()); TipoMudancaDTO tipoMudancaDto = recuperaTipoMudanca(); enviaEmail(tipoMudancaDto.getIdModeloEmailAcoes()); } } @Override public void delega(String loginUsuario, ObjetoNegocioFluxoDTO objetoNegocioDto, Integer idItemTrabalho, String usuarioDestino, String grupoDestino) throws Exception { TarefaFluxoDTO tarefaFluxoDto = recuperaTarefa(idItemTrabalho); if (tarefaFluxoDto == null) return; InstanciaFluxo instanciaFluxo = new InstanciaFluxo(this, tarefaFluxoDto.getIdInstancia()); instanciaFluxo.delegaItemTrabalho(loginUsuario, idItemTrabalho, usuarioDestino, grupoDestino); this.objetoNegocioDto = objetoNegocioDto; OcorrenciaMudancaDao ocorrenciaMudancaDao = new OcorrenciaMudancaDao(); setTransacaoDao(ocorrenciaMudancaDao); OcorrenciaMudancaDTO ocorrenciaMudancaDto = new OcorrenciaMudancaDTO(); ocorrenciaMudancaDto.setIdRequisicaoMudanca(getRequisicaoMudancaDto().getIdRequisicaoMudanca()); ocorrenciaMudancaDto.setDataregistro(UtilDatas.getDataAtual()); ocorrenciaMudancaDto.setHoraregistro(UtilDatas.formatHoraFormatadaStr(UtilDatas.getHoraAtual())); ocorrenciaMudancaDto.setTempoGasto(0); ocorrenciaMudancaDto.setDescricao(br.com.centralit.citcorpore.util.Enumerados.CategoriaOcorrencia.Compartilhamento.getDescricao()); ocorrenciaMudancaDto.setDataInicio(UtilDatas.getDataAtual()); ocorrenciaMudancaDto.setDataFim(UtilDatas.getDataAtual()); ocorrenciaMudancaDto.setInformacoesContato("n�o se aplica"); ocorrenciaMudancaDto.setRegistradopor(loginUsuario); ocorrenciaMudancaDto.setDadosMudanca(new Gson().toJson(getRequisicaoMudancaDto())); String ocorr = "Compartilhamento da tarefa \""+tarefaFluxoDto.getElementoFluxoDto().getDocumentacao()+"\""; if (usuarioDestino != null) ocorr += " com o usu�rio "+usuarioDestino; if (grupoDestino != null) ocorr += " com o grupo "+grupoDestino; ocorrenciaMudancaDto.setOcorrencia(ocorr); ocorrenciaMudancaDto.setOrigem(br.com.centralit.citcorpore.util.Enumerados.OrigemOcorrencia.OUTROS.getSigla().toString()); ocorrenciaMudancaDto.setCategoria(br.com.centralit.citcorpore.util.Enumerados.CategoriaOcorrencia.Compartilhamento.getSigla()); ocorrenciaMudancaDto.setIdItemTrabalho(idItemTrabalho); ocorrenciaMudancaDao.create(ocorrenciaMudancaDto); } @Override public void direcionaAtendimento(String loginUsuario, ObjetoNegocioFluxoDTO objetoNegocioDto, String grupoAtendimento) throws Exception { if (getRequisicaoMudancaDto() == null) return; if(grupoAtendimento == null) return; GrupoDTO grupoAtendimentoDto = new GrupoDao().restoreBySigla(grupoAtendimento); if (grupoAtendimentoDto == null) return; UsuarioDTO usuarioRespDto = new UsuarioDTO(); usuarioRespDto.setIdUsuario(getRequisicaoMudancaDto().getIdResponsavel()); usuarioRespDto = (UsuarioDTO) new UsuarioDao().restore(usuarioRespDto); this.objetoNegocioDto = objetoNegocioDto; Collection<ExecucaoMudancaDTO> colExecucao = new ExecucaoMudancaDao().listByIdRequisicaoMudanca(getRequisicaoMudancaDto().getIdRequisicaoMudanca()); if (colExecucao != null) { AtribuicaoFluxoDao atribuicaoFluxoDao = new AtribuicaoFluxoDao(); setTransacaoDao(atribuicaoFluxoDao); OcorrenciaMudancaDao ocorrenciaMudancaDao = new OcorrenciaMudancaDao(); setTransacaoDao(ocorrenciaMudancaDao); for (ExecucaoMudancaDTO execucaoSolicitacaoDto : colExecucao) { Collection<AtribuicaoFluxoDTO> colAtribuicao = atribuicaoFluxoDao.findByDisponiveisByIdInstancia(execucaoSolicitacaoDto.getIdInstanciaFluxo()); if (colAtribuicao == null) continue; for (AtribuicaoFluxoDTO atribuicaoFluxoDto : colAtribuicao) { if (!atribuicaoFluxoDto.getTipo().equals(TipoAtribuicao.Automatica.name())) continue; if (atribuicaoFluxoDto.getIdGrupo() != null && atribuicaoFluxoDto.getIdGrupo().intValue() == grupoAtendimentoDto.getIdGrupo().intValue()) continue; if (atribuicaoFluxoDto.getIdUsuario() != null && atribuicaoFluxoDto.getIdUsuario().intValue() == usuarioRespDto.getIdUsuario().intValue()) delega(loginUsuario, objetoNegocioDto, atribuicaoFluxoDto.getIdItemTrabalho(), null, grupoAtendimento); else{ atribuicaoFluxoDto.setIdUsuario(null); atribuicaoFluxoDto.setIdGrupo(grupoAtendimentoDto.getIdGrupo()); atribuicaoFluxoDao.update(atribuicaoFluxoDto); } TarefaFluxoDTO tarefaFluxoDto = recuperaTarefa(atribuicaoFluxoDto.getIdItemTrabalho()); OcorrenciaMudancaDTO ocorrenciaMudancaDto = new OcorrenciaMudancaDTO(); ocorrenciaMudancaDto.setIdRequisicaoMudanca(getRequisicaoMudancaDto().getIdRequisicaoMudanca()); ocorrenciaMudancaDto.setDataregistro(UtilDatas.getDataAtual()); ocorrenciaMudancaDto.setHoraregistro(UtilDatas.formatHoraFormatadaStr(UtilDatas.getHoraAtual())); ocorrenciaMudancaDto.setTempoGasto(0); ocorrenciaMudancaDto.setDescricao(br.com.centralit.citcorpore.util.Enumerados.CategoriaOcorrencia.Direcionamento.getDescricao()); ocorrenciaMudancaDto.setDataInicio(UtilDatas.getDataAtual()); ocorrenciaMudancaDto.setDataFim(UtilDatas.getDataAtual()); ocorrenciaMudancaDto.setInformacoesContato("n�o se aplica"); ocorrenciaMudancaDto.setRegistradopor(loginUsuario); ocorrenciaMudancaDto.setDadosMudanca(new Gson().toJson(getRequisicaoMudancaDto())); String ocorr = "Direcionamento da tarefa \""+tarefaFluxoDto.getElementoFluxoDto().getDocumentacao()+"\""; ocorr += " para o grupo "+grupoAtendimento; ocorrenciaMudancaDto.setOcorrencia(ocorr); ocorrenciaMudancaDto.setOrigem(br.com.centralit.citcorpore.util.Enumerados.OrigemOcorrencia.OUTROS.getSigla().toString()); ocorrenciaMudancaDto.setCategoria(br.com.centralit.citcorpore.util.Enumerados.CategoriaOcorrencia.Direcionamento.getSigla()); ocorrenciaMudancaDto.setIdItemTrabalho(atribuicaoFluxoDto.getIdItemTrabalho()); ocorrenciaMudancaDao.create(ocorrenciaMudancaDto); } } } } @Override public void mapObjetoNegocio(Map<String, Object> map) throws Exception { RequisicaoMudancaDTO requisicaoMudancaDto = (RequisicaoMudancaDTO) objetoNegocioDto; RequisicaoMudancaDTO requisicaoAuxDto = new RequisicaoMudancaServiceEjb().restoreAll(requisicaoMudancaDto.getIdRequisicaoMudanca(), getTransacao()); requisicaoMudancaDto.setNomeGrupoAtual(requisicaoAuxDto.getNomeGrupoAtual()); requisicaoMudancaDto.setNomeGrupoNivel1(requisicaoAuxDto.getNomeGrupoNivel1()); adicionaObjeto("requisicaoMudanca", requisicaoMudancaDto, map); if (usuarioDto != null) adicionaObjeto("usuario", usuarioDto, map); else if (requisicaoMudancaDto.getUsuarioDto() != null) adicionaObjeto("usuario", requisicaoMudancaDto.getUsuarioDto(), map); adicionaObjeto("execucaoFluxo", this, map); adicionaObjeto("requisicaoMudancaService", new RequisicaoMudancaServiceEjb(), map); } public RequisicaoMudancaDTO getRequisicaoMudancaDto() { return (RequisicaoMudancaDTO) objetoNegocioDto; } @Override public List<TarefaFluxoDTO> recuperaTarefas(String loginUsuario) throws Exception { List<TarefaFluxoDTO> result = null; List<TarefaFluxoDTO> listTarefas = super.recuperaTarefas(loginUsuario); if (listTarefas != null) { result = new ArrayList(); RequisicaoMudancaServiceEjb requisicaoService = new RequisicaoMudancaServiceEjb(); ExecucaoMudancaDao execucaoMudancaDao = new ExecucaoMudancaDao(); for (TarefaFluxoDTO tarefaDto : listTarefas) { ExecucaoMudancaDTO execucaoMudancaDto = execucaoMudancaDao.findByIdInstanciaFluxo(tarefaDto.getIdInstancia()); if (execucaoMudancaDto != null && execucaoMudancaDto.getIdRequisicaoMudanca() != null) { RequisicaoMudancaDTO requisicaoMudancaDto = requisicaoService.restoreAll(execucaoMudancaDto.getIdRequisicaoMudanca(),null); if (requisicaoMudancaDto != null) { tarefaDto.setRequisicaoMudancaDto(requisicaoMudancaDto); result.add(tarefaDto); } } } Collections.sort(result, new ObjectSimpleComparator("getDataHoraInicio", ObjectSimpleComparator.ASC)); } return result; } @Override public void enviaEmail(String identificador) throws Exception { if (identificador == null) return; ModeloEmailDTO modeloEmailDto = new ModeloEmailDao().findByIdentificador(identificador); if (modeloEmailDto != null) enviaEmail(modeloEmailDto.getIdModeloEmail()); } @Override public void enviaEmail(Integer idModeloEmail) throws Exception { if (idModeloEmail == null) return; String enviaEmail = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.EnviaEmailFluxo, "N"); if (!enviaEmail.equalsIgnoreCase("S")) return; RequisicaoMudancaDTO requisicaoAuxDto = new RequisicaoMudancaServiceEjb().restoreAll(getRequisicaoMudancaDto().getIdRequisicaoMudanca(), getTransacao()); requisicaoAuxDto.setNomeContato(this.getRequisicaoMudancaDto().getNomeContato()); if (requisicaoAuxDto.getEmailSolicitante() == null) return; String remetente = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.RemetenteNotificacoesSolicitacao, null); if (remetente == null) throw new LogicException(i18n_Message("citcorpore.comum.notficacaoEmailParametrizado")); requisicaoAuxDto.setNomeTarefa(getRequisicaoMudancaDto().getNomeTarefa()); MensagemEmail mensagem = new MensagemEmail(idModeloEmail, new IDto[] {requisicaoAuxDto}); try { mensagem.envia(requisicaoAuxDto.getEmailSolicitante(), remetente, remetente); } catch (Exception e) { } } private TipoMudancaDTO recuperaTipoMudanca() throws Exception { TipoMudancaDAO tipoMudancaDao = new TipoMudancaDAO(); setTransacaoDao(tipoMudancaDao); TipoMudancaDTO tipoMudancaDto = new TipoMudancaDTO(); if(getRequisicaoMudancaDto().getIdTipoMudanca()!=null){ tipoMudancaDto.setIdTipoMudanca(getRequisicaoMudancaDto().getIdTipoMudanca()); tipoMudancaDto = (TipoMudancaDTO) tipoMudancaDao.restore(tipoMudancaDto); } if (tipoMudancaDto == null){ throw new LogicException(i18n_Message("requisicaoMudanca.categoriaMudancaNaoLocalizada")); } return tipoMudancaDto; } @Override public void encerra() throws Exception { RequisicaoMudancaDTO requisicaoMudancaDto = getRequisicaoMudancaDto(); if (requisicaoMudancaDto == null) throw new LogicException(i18n_Message("requisicaoMudanca.naoEncontrada")); if (requisicaoMudancaDto.encerrada()) return; //if (!requisicaoMudancaDto.atendida() && !requisicaoMudancaDto.reclassificada()) // throw new Exception("Solicita��o de servi�o n�o permite encerramento"); Collection<ExecucaoMudancaDTO> colExecucao = new ExecucaoMudancaDao().listByIdRequisicaoMudanca(getRequisicaoMudancaDto().getIdRequisicaoMudanca()); if (colExecucao != null) { for (ExecucaoMudancaDTO execucaoDto : colExecucao) { InstanciaFluxo instanciaFluxo = new InstanciaFluxo(this, execucaoDto.getIdInstanciaFluxo()); instanciaFluxo.encerra(); } } if(!requisicaoMudancaDto.getStatus().equalsIgnoreCase(SituacaoRequisicaoMudanca.Cancelada.name()) && !requisicaoMudancaDto.getStatus().equalsIgnoreCase(SituacaoRequisicaoMudanca.Rejeitada.name())){ requisicaoMudancaDto.setStatus(SituacaoRequisicaoMudanca.Concluida.name()); } requisicaoMudancaDto.setDataHoraConclusao(UtilDatas.getDataHoraAtual()); //calculaTempoCaptura(requisicaoMudancaDto); //calculaTempoAtendimento(requisicaoMudancaDto); //calculaTempoAtraso(requisicaoMudancaDto); RequisicaoMudancaDao requisicaoDao = new RequisicaoMudancaDao(); setTransacaoDao(requisicaoDao); requisicaoDao.updateNotNull(requisicaoMudancaDto); OcorrenciaMudancaDao ocorrenciaMudancaDao = new OcorrenciaMudancaDao(); setTransacaoDao(ocorrenciaMudancaDao); OcorrenciaMudancaDTO ocorrenciaMudancaDto = new OcorrenciaMudancaDTO(); ocorrenciaMudancaDto.setIdRequisicaoMudanca(getRequisicaoMudancaDto().getIdRequisicaoMudanca()); ocorrenciaMudancaDto.setDataregistro(UtilDatas.getDataAtual()); ocorrenciaMudancaDto.setHoraregistro(UtilDatas.formatHoraFormatadaStr(UtilDatas.getHoraAtual())); ocorrenciaMudancaDto.setTempoGasto(0); ocorrenciaMudancaDto.setDescricao(br.com.centralit.citcorpore.util.Enumerados.CategoriaOcorrencia.Encerramento.getDescricao()); ocorrenciaMudancaDto.setDataInicio(UtilDatas.getDataAtual()); ocorrenciaMudancaDto.setDataFim(UtilDatas.getDataAtual()); ocorrenciaMudancaDto.setRegistradopor("Autom�tico"); ocorrenciaMudancaDto.setDadosMudanca(new Gson().toJson(getRequisicaoMudancaDto())); ocorrenciaMudancaDto.setOrigem(br.com.centralit.citcorpore.util.Enumerados.OrigemOcorrencia.OUTROS.getSigla().toString()); ocorrenciaMudancaDto.setCategoria(br.com.centralit.citcorpore.util.Enumerados.CategoriaOcorrencia.Encerramento.getSigla()); ocorrenciaMudancaDao.create(ocorrenciaMudancaDto); if (getRequisicaoMudancaDto().getEnviaEmailFinalizacao() != null && getRequisicaoMudancaDto().getEnviaEmailFinalizacao().equalsIgnoreCase("S")) { TipoMudancaDTO tipoMudancaDto = recuperaTipoMudanca(); enviaEmail(tipoMudancaDto.getIdModeloEmailFinalizacao()); } } @Override public void reabre(String loginUsuario) throws Exception { RequisicaoMudancaDTO requisicaoMudancaDto = getRequisicaoMudancaDto(); if (requisicaoMudancaDto == null) throw new LogicException(i18n_Message("requisicaoMudanca.naoEncontrada")); if (!requisicaoMudancaDto.encerrada()) throw new LogicException(i18n_Message("requisicaoMudanca.naoPermiteReabertura")); usuarioDto = new UsuarioDao().restoreByLogin(loginUsuario); int seqReabertura = 1; ReaberturaMudancaDao reaberturaMudancaDao = new ReaberturaMudancaDao(); setTransacaoDao(reaberturaMudancaDao); Collection colReabertura = reaberturaMudancaDao.findByIdRequisicaoMudanca(requisicaoMudancaDto.getIdRequisicaoMudanca()); if (colReabertura != null) seqReabertura = colReabertura.size() + 1; ReaberturaMudancaDTO reaberturaMudancaDto = new ReaberturaMudancaDTO(); reaberturaMudancaDto.setIdRequisicaoMudanca(requisicaoMudancaDto.getIdRequisicaoMudanca()); reaberturaMudancaDto.setSeqReabertura(seqReabertura); reaberturaMudancaDto.setIdResponsavel(usuarioDto.getIdUsuario()); reaberturaMudancaDto.setDataHora(UtilDatas.getDataHoraAtual()); reaberturaMudancaDao.create(reaberturaMudancaDto); requisicaoMudancaDto.setStatus(SituacaoRequisicaoMudanca.Reaberta.name()); requisicaoMudancaDto.setSeqReabertura(new Integer(seqReabertura)); RequisicaoMudancaDao requisicaoDao = new RequisicaoMudancaDao(); setTransacaoDao(requisicaoDao); requisicaoDao.update(requisicaoMudancaDto); OcorrenciaMudancaDao ocorrenciaMudancaDao = new OcorrenciaMudancaDao(); setTransacaoDao(ocorrenciaMudancaDao); OcorrenciaMudancaDTO ocorrenciaMudancaDto = new OcorrenciaMudancaDTO(); ocorrenciaMudancaDto.setIdRequisicaoMudanca(requisicaoMudancaDto.getIdRequisicaoMudanca()); ocorrenciaMudancaDto.setDataregistro(UtilDatas.getDataAtual()); ocorrenciaMudancaDto.setHoraregistro(UtilDatas.formatHoraFormatadaStr(UtilDatas.getHoraAtual())); ocorrenciaMudancaDto.setTempoGasto(0); ocorrenciaMudancaDto.setDescricao(br.com.centralit.citcorpore.util.Enumerados.CategoriaOcorrencia.Reabertura.getDescricao()); ocorrenciaMudancaDto.setDataInicio(UtilDatas.getDataAtual()); ocorrenciaMudancaDto.setDataFim(UtilDatas.getDataAtual()); ocorrenciaMudancaDto.setRegistradopor(usuarioDto.getLogin()); ocorrenciaMudancaDto.setDadosMudanca(new Gson().toJson(getRequisicaoMudancaDto())); ocorrenciaMudancaDto.setOrigem(br.com.centralit.citcorpore.util.Enumerados.OrigemOcorrencia.OUTROS.getSigla().toString()); ocorrenciaMudancaDto.setCategoria(br.com.centralit.citcorpore.util.Enumerados.CategoriaOcorrencia.Reabertura.getSigla()); ocorrenciaMudancaDao.create(ocorrenciaMudancaDto); inicia(); } @Override public void suspende(String loginUsuario) throws Exception { RequisicaoMudancaDTO requisicaoMudancaDto = getRequisicaoMudancaDto(); if (requisicaoMudancaDto == null) throw new LogicException(i18n_Message("requisicaoMudanca.naoEncontrada")); if (!requisicaoMudancaDto.emAtendimento()) throw new LogicException(i18n_Message("requisicaoMudanca.naoPermiteSuspensao")); Timestamp tsAtual = UtilDatas.getDataHoraAtual(); Timestamp tsInicial = requisicaoMudancaDto.getDataHoraInicio(); if (requisicaoMudancaDto.getDataHoraReativacao() != null) tsInicial = requisicaoMudancaDto.getDataHoraReativacao(); TipoMudancaDTO tipoMudancaDto = recuperaTipoMudanca(); if(tipoMudancaDto.getIdCalendario()!=null){ requisicaoMudancaDto.setIdCalendario(tipoMudancaDto.getIdCalendario()); } CalculoJornadaDTO calculoDto = new CalculoJornadaDTO(requisicaoMudancaDto.getIdCalendario(), tsInicial); calculoDto = new CalendarioServiceEjb().calculaPrazoDecorrido(calculoDto, tsAtual, null); RequisicaoMudancaDao requisicaoDao = new RequisicaoMudancaDao(); setTransacaoDao(requisicaoDao); requisicaoMudancaDto.setStatus(SituacaoRequisicaoMudanca.Suspensa.name()); if (requisicaoMudancaDto.getTempoDecorridoHH() == null){ requisicaoMudancaDto.setTempoDecorridoHH(0); } if (requisicaoMudancaDto.getTempoDecorridoMM() == null){ requisicaoMudancaDto.setTempoDecorridoMM(0); } requisicaoMudancaDto.setTempoDecorridoHH(new Integer(requisicaoMudancaDto.getTempoDecorridoHH().intValue() + calculoDto.getTempoDecorridoHH().intValue())); requisicaoMudancaDto.setTempoDecorridoMM(new Integer(requisicaoMudancaDto.getTempoDecorridoMM().intValue() + calculoDto.getTempoDecorridoMM().intValue())); requisicaoMudancaDto.setDataHoraSuspensao(tsAtual); requisicaoMudancaDto.setDataHoraReativacao(null); requisicaoDao.update(requisicaoMudancaDto); OcorrenciaMudancaDao ocorrenciaMudancaDao = new OcorrenciaMudancaDao(); setTransacaoDao(ocorrenciaMudancaDao); OcorrenciaMudancaDTO ocorrenciaMudancaDto = new OcorrenciaMudancaDTO(); ocorrenciaMudancaDto.setIdRequisicaoMudanca(requisicaoMudancaDto.getIdRequisicaoMudanca()); ocorrenciaMudancaDto.setDataregistro(new Date(tsAtual.getTime())); ocorrenciaMudancaDto.setHoraregistro(UtilDatas.formatHoraFormatadaStr(tsAtual)); ocorrenciaMudancaDto.setTempoGasto(0); ocorrenciaMudancaDto.setDescricao(br.com.centralit.citcorpore.util.Enumerados.CategoriaOcorrencia.Suspensao.getDescricao()); ocorrenciaMudancaDto.setDataInicio(UtilDatas.getDataAtual()); ocorrenciaMudancaDto.setDataFim(UtilDatas.getDataAtual()); ocorrenciaMudancaDto.setRegistradopor(loginUsuario); ocorrenciaMudancaDto.setDadosMudanca(new Gson().toJson(getRequisicaoMudancaDto())); ocorrenciaMudancaDto.setIdJustificativa(requisicaoMudancaDto.getIdJustificativa()); ocorrenciaMudancaDto.setComplementoJustificativa(requisicaoMudancaDto.getComplementoJustificativa()); ocorrenciaMudancaDto.setOrigem(br.com.centralit.citcorpore.util.Enumerados.OrigemOcorrencia.OUTROS.getSigla().toString()); ocorrenciaMudancaDto.setCategoria(br.com.centralit.citcorpore.util.Enumerados.CategoriaOcorrencia.Suspensao.getSigla()); ocorrenciaMudancaDao.create(ocorrenciaMudancaDto); } @Override public void reativa(String loginUsuario) throws Exception { RequisicaoMudancaDTO requisicaoMudancaDto = getRequisicaoMudancaDto(); if (requisicaoMudancaDto == null) throw new LogicException(i18n_Message("requisicaoMudanca.naoEncontrada")); if (!requisicaoMudancaDto.suspensa()) throw new LogicException(i18n_Message("requisicaoMudanca.naoPermiteReativacao")); Timestamp tsAtual = UtilDatas.getDataHoraAtual(); double prazo = requisicaoMudancaDto.getPrazoHH() + new Double(requisicaoMudancaDto.getPrazoMM()).doubleValue() / 60; double tempo = requisicaoMudancaDto.getTempoDecorridoHH() + new Double(requisicaoMudancaDto.getTempoDecorridoMM()).doubleValue() / 60; prazo = prazo - tempo; if (prazo > 0){ CalculoJornadaDTO calculoDto = new CalculoJornadaDTO(requisicaoMudancaDto.getIdCalendario(), tsAtual, Util.getHora(prazo), Util.getMinuto(prazo)); calculoDto = new CalendarioServiceEjb().calculaDataHoraFinal(calculoDto, false, null); requisicaoMudancaDto.setDataHoraTermino(calculoDto.getDataHoraFinal()); } RequisicaoMudancaDao requisicaoDao = new RequisicaoMudancaDao(); setTransacaoDao(requisicaoDao); requisicaoMudancaDto.setStatus(SituacaoRequisicaoMudanca.EmExecucao.name()); requisicaoMudancaDto.setDataHoraSuspensao(null); requisicaoMudancaDto.setDataHoraReativacao(tsAtual); requisicaoDao.update(requisicaoMudancaDto); OcorrenciaMudancaDao ocorrenciaMudancaDao = new OcorrenciaMudancaDao(); setTransacaoDao(ocorrenciaMudancaDao); OcorrenciaMudancaDTO ocorrenciaMudancaDto = new OcorrenciaMudancaDTO(); ocorrenciaMudancaDto.setIdRequisicaoMudanca(requisicaoMudancaDto.getIdRequisicaoMudanca()); ocorrenciaMudancaDto.setDataregistro(new Date(tsAtual.getTime())); ocorrenciaMudancaDto.setHoraregistro(UtilDatas.formatHoraFormatadaStr(tsAtual)); ocorrenciaMudancaDto.setTempoGasto(0); ocorrenciaMudancaDto.setDescricao(br.com.centralit.citcorpore.util.Enumerados.CategoriaOcorrencia.Reativacao.getDescricao()); ocorrenciaMudancaDto.setDataInicio(UtilDatas.getDataAtual()); ocorrenciaMudancaDto.setDataFim(UtilDatas.getDataAtual()); ocorrenciaMudancaDto.setRegistradopor(loginUsuario); ocorrenciaMudancaDto.setDadosMudanca(new Gson().toJson(getRequisicaoMudancaDto())); ocorrenciaMudancaDto.setOrigem(br.com.centralit.citcorpore.util.Enumerados.OrigemOcorrencia.OUTROS.getSigla().toString()); ocorrenciaMudancaDto.setCategoria(br.com.centralit.citcorpore.util.Enumerados.CategoriaOcorrencia.Reativacao.getSigla()); ocorrenciaMudancaDao.create(ocorrenciaMudancaDto); } private Integer getIdCalendario(RequisicaoMudancaDTO requisicaoMudancaDto) throws Exception { Integer idCalendario = requisicaoMudancaDto.getIdCalendario(); if (requisicaoMudancaDto.getIdCalendario() == null) { TipoMudancaDTO tipoMudancaDto = recuperaTipoMudanca(); idCalendario = tipoMudancaDto.getIdCalendario(); } return idCalendario; } public void calculaTempoAtendimento(RequisicaoMudancaDTO requisicaoMudancaDto) throws Exception { Integer idCalendario = getIdCalendario(requisicaoMudancaDto); Timestamp tsAtual = UtilDatas.getDataHoraAtual(); if (requisicaoMudancaDto.getStatus().equalsIgnoreCase(SituacaoRequisicaoMudanca.Concluida.name())) tsAtual = requisicaoMudancaDto.getDataHoraConclusao(); Timestamp tsInicial = requisicaoMudancaDto.getDataHoraInicio(); if (requisicaoMudancaDto.getDataHoraReativacao() != null) tsInicial = requisicaoMudancaDto.getDataHoraReativacao(); CalculoJornadaDTO calculoDto = new CalculoJornadaDTO(idCalendario, tsInicial); calculoDto = new CalendarioServiceEjb().calculaPrazoDecorrido(calculoDto, tsAtual, null); if (requisicaoMudancaDto.getTempoDecorridoHH() == null){ requisicaoMudancaDto.setTempoDecorridoHH(0); } if (requisicaoMudancaDto.getTempoDecorridoMM() == null){ requisicaoMudancaDto.setTempoDecorridoMM(0); } requisicaoMudancaDto.setTempoAtendimentoHH(new Integer(requisicaoMudancaDto.getTempoDecorridoHH().intValue() + calculoDto.getTempoDecorridoHH().intValue())); requisicaoMudancaDto.setTempoAtendimentoMM(new Integer(requisicaoMudancaDto.getTempoDecorridoMM().intValue() + calculoDto.getTempoDecorridoMM().intValue())); } public void calculaTempoCaptura(RequisicaoMudancaDTO requisicaoMudancaDto) throws Exception { requisicaoMudancaDto.setTempoCapturaHH(0); requisicaoMudancaDto.setTempoCapturaMM(0); if (requisicaoMudancaDto.getDataHoraCaptura() == null) return; Integer idCalendario = getIdCalendario(requisicaoMudancaDto); CalculoJornadaDTO calculoDto = new CalculoJornadaDTO(idCalendario, requisicaoMudancaDto.getDataHoraInicio()); calculoDto = new CalendarioServiceEjb().calculaPrazoDecorrido(calculoDto, requisicaoMudancaDto.getDataHoraCaptura(), null); requisicaoMudancaDto.setTempoCapturaHH(calculoDto.getTempoDecorridoHH().intValue()); requisicaoMudancaDto.setTempoCapturaMM(calculoDto.getTempoDecorridoMM().intValue()); } public void calculaTempoAtraso(RequisicaoMudancaDTO requisicaoMudancaDto) throws Exception { requisicaoMudancaDto.setTempoAtrasoHH(0); requisicaoMudancaDto.setTempoAtrasoMM(0); if (requisicaoMudancaDto.getDataHoraTermino() != null) { Timestamp dataHoraLimite = requisicaoMudancaDto.getDataHoraTermino(); Timestamp dataHoraComparacao = UtilDatas.getDataHoraAtual(); if (requisicaoMudancaDto.encerrada()) dataHoraComparacao = requisicaoMudancaDto.getDataHoraConclusao(); if (dataHoraComparacao.compareTo(dataHoraLimite) > 0) { long atrasoSLA = UtilDatas.calculaDiferencaTempoEmMilisegundos(dataHoraComparacao, dataHoraLimite) / 1000; String hora = Util.getHoraStr(new Double(atrasoSLA) / 3600); int tam = hora.length(); requisicaoMudancaDto.setTempoAtrasoHH(new Integer(hora.substring(0, tam - 2))); requisicaoMudancaDto.setTempoAtrasoMM(new Integer(hora.substring(tam - 2, tam))); } } } @Override public void executaEvento(EventoFluxoDTO eventoFluxoDto) throws Exception { ExecucaoMudancaDao execucaoMudancaDao = new ExecucaoMudancaDao(); ExecucaoMudancaDTO execucaoMudancaDto = execucaoMudancaDao.findByIdInstanciaFluxo(eventoFluxoDto.getIdInstancia()); if (execucaoMudancaDto == null){ System.out.println("Execu��o mudan�a do evento "+eventoFluxoDto.getIdItemTrabalho()+" n�o encontrada"); throw new LogicException(i18n_Message("requisicaoMudanca.eventoNaoEncontrado")); } RequisicaoMudancaDao requisicaoMudancaDao = new RequisicaoMudancaDao(); RequisicaoMudancaDTO requisicaoMudancaDto = new RequisicaoMudancaDTO(); requisicaoMudancaDto.setIdRequisicaoMudanca(execucaoMudancaDto.getIdRequisicaoMudanca()); requisicaoMudancaDto = (RequisicaoMudancaDTO) requisicaoMudancaDao.restore(requisicaoMudancaDto); if (requisicaoMudancaDto == null){ System.out.println("Execu��o mudan�a do evento "+eventoFluxoDto.getIdItemTrabalho()+" n�o encontrada"); throw new LogicException(i18n_Message("requisicaoMudanca.eventoNaoEncontrado")); } TransactionControler tc = new TransactionControlerImpl(execucaoMudancaDao.getAliasDB()); setTransacao(tc); setObjetoNegocioDto(requisicaoMudancaDto); InstanciaFluxo instanciaFluxo = new InstanciaFluxo(this, eventoFluxoDto.getIdInstancia()); HashMap<String, Object> map = new HashMap(); mapObjetoNegocio(instanciaFluxo.getObjetos(map)); instanciaFluxo.executaEvento(eventoFluxoDto.getIdItemTrabalho(), map); } @Override public void validaEncerramento() throws Exception { // TODO Auto-generated method stub } @Override public void enviaEmail(String identificador, String[] destinatarios) throws Exception { // TODO Auto-generated method stub } /** * Notifica todos os Empregados de um grupo. * * @param idModeloEmail * @throws Exception */ public void enviaEmailGrupo(Integer idModeloEmail, Integer idGrupoDestino) throws Exception { MensagemEmail mensagem = null; GrupoEmailService grupoEmailService = (GrupoEmailService) ServiceLocator.getInstance().getService(GrupoEmailService.class, null); if (idGrupoDestino == null) { return; } if (idModeloEmail == null) { return; } GrupoService grupoService = (GrupoService) ServiceLocator.getInstance().getService(GrupoService.class, null); List<String> emails = null; try { emails = (List<String>) grupoService.listarEmailsPorGrupo(idGrupoDestino); } catch (Exception e) { return; } if (emails == null || emails.isEmpty()) { return; } String remetente = ParametroUtil.getValor(ParametroSistema.RemetenteNotificacoesSolicitacao, getTransacao(), null); if (remetente == null) throw new LogicException(i18n_Message("requisicaoMudanca.remetenteNaoParametrizado")); RequisicaoMudancaDTO requisicaoMudancaDTO = new RequisicaoMudancaServiceEjb().restoreAll(this.getRequisicaoMudancaDto().getIdRequisicaoMudanca(), getTransacao()); if (requisicaoMudancaDTO == null) { return; } requisicaoMudancaDTO.setNomeTarefa(getRequisicaoMudancaDto().getNomeTarefa()); try { for (String email : emails) { int posArroba = email.indexOf("@"); if (posArroba > 0 && email.substring(posArroba).contains(".")) { try { mensagem = new MensagemEmail(idModeloEmail, new IDto[] { requisicaoMudancaDTO }); mensagem.envia(email, remetente, remetente); } catch (Exception e) { } } } } catch (Exception e) { } } //envia e-mail para todos do grupo em um agendamento de reuni�o public void enviaEmailReuniaoGrupo(Integer idModeloEmail, Integer idGrupoDestino, Integer idRequisicaoMudanca, Integer idReuniaoRequisicaoMudanca) throws Exception { MensagemEmail mensagem = null; if (idGrupoDestino == null) { return; } if (idModeloEmail == null) { return; } GrupoService grupoService = (GrupoService) ServiceLocator.getInstance().getService(GrupoService.class, null); List<String> emails = null; try { emails = (List<String>) grupoService.listarPessoasEmailPorGrupo(idGrupoDestino); } catch (Exception e) { return; } if (emails == null || emails.isEmpty()) { return; } String remetente = ParametroUtil.getValor(ParametroSistema.RemetenteNotificacoesSolicitacao, getTransacao(), null); if (remetente == null) throw new LogicException(i18n_Message("requisicaoMudanca.remetenteNaoParametrizado")); RequisicaoMudancaDTO requisicaoMudancaDTO = new RequisicaoMudancaServiceEjb().restoreAllReuniao(idRequisicaoMudanca, idReuniaoRequisicaoMudanca, getTransacao()); if (requisicaoMudancaDTO == null) { return; } Object[] emailsArray = new Object[(emails.size()/2)]; int j = 0; for (int i = 0; i < emails.size(); i++) { if(emails.get(i).contains("@")){ continue; } else{ emailsArray[j] = emails.get(i); j++; } } try { int i = 0; for (String email : emails) { int posArroba = email.indexOf("@"); if (posArroba > 0 && email.substring(posArroba).contains(".")) { try { if(StringUtils.isNotBlank(emailsArray[i].toString())){ String nomeContato = emailsArray[i].toString(); requisicaoMudancaDTO.setNomeContato(nomeContato); } mensagem = new MensagemEmail(idModeloEmail, new IDto[] { requisicaoMudancaDTO }); mensagem.envia(email, remetente, remetente); i++; } catch (Exception e) { // faz nada } } } } catch (Exception e) { } } /** * Notifica proprietario da Requisi��o mudan�a. * * @param idModeloEmail * @throws Exception * @author thays.araujo */ public void enviaEmailProprietario(Integer idModeloEmail) throws Exception { MensagemEmail mensagem = null; if (idModeloEmail == null) { return; } EmpregadoService empregadoService = (EmpregadoService) ServiceLocator.getInstance().getService(EmpregadoService.class, null); EmpregadoDTO empregadoDto = new EmpregadoDTO(); empregadoDto.setIdEmpregado(this.getRequisicaoMudancaDto().getUsuarioDto().getIdEmpregado()); empregadoDto = (EmpregadoDTO) empregadoService.restore(empregadoDto); String email = ""; try { email = empregadoDto.getEmail(); } catch (Exception e) { return; } if (email == null || email.isEmpty() || email.equalsIgnoreCase("")) { return; } String remetente = ParametroUtil.getValor(ParametroSistema.RemetenteNotificacoesSolicitacao, getTransacao(), null); if (remetente == null) throw new LogicException(i18n_Message("requisicaoMudanca.remetenteNaoParametrizado")); RequisicaoMudancaDTO requisicaoMudancaDTO = new RequisicaoMudancaServiceEjb().restoreAll(this.getRequisicaoMudancaDto().getIdRequisicaoMudanca(), getTransacao()); if (requisicaoMudancaDTO == null) { return; } requisicaoMudancaDTO.setNomeTarefa(getRequisicaoMudancaDto().getNomeTarefa()); try { // EmpregadoDTO aux = null; int posArroba = email.indexOf("@"); if (posArroba > 0 && email.substring(posArroba).contains(".")) { try { requisicaoMudancaDTO.setNomeContato(empregadoDto.getNome()); mensagem = new MensagemEmail(idModeloEmail, new IDto[] { requisicaoMudancaDTO }); // aux = (EmpregadoDTO) getEmpregadoService().restore(e); // if(aux != null && aux.getEmail() != null && !aux.getEmail().trim().equalsIgnoreCase("") ){ mensagem.envia(email, remetente, remetente); } catch (Exception e) { // faz nada } } // } } catch (Exception e) { } } @Override public void verificaSLA(ItemTrabalho itemTrabalho) throws Exception { // TODO Auto-generated method stub } }