package br.com.centralit.bpm.negocio; import java.util.HashMap; import java.util.List; import java.util.Map; import br.com.centralit.bpm.dto.ElementoFluxoEmailDTO; import br.com.centralit.bpm.dto.GrupoBpmDTO; import br.com.centralit.bpm.dto.ItemTrabalhoFluxoDTO; import br.com.centralit.bpm.dto.UsuarioBpmDTO; import br.com.centralit.bpm.integracao.ItemTrabalhoFluxoDao; import br.com.centralit.bpm.util.Enumerados; import br.com.citframework.util.UtilDatas; public class Email extends ItemTrabalho{ public List<ItemTrabalho> resolve() throws Exception { registra(); executa(null,itemTrabalhoDto.getIdElemento(),instanciaFluxo.getMapObj()); SequenciaFluxo sequenciaFluxo = new SequenciaFluxo(instanciaFluxo); return sequenciaFluxo.getDestinos(this); } public void executa(String loginUsuario, Integer id, Map<String, Object> objetos) throws Exception { if (resolvido()) return; if (objetos == null) { objetos = new HashMap<>(); this.instanciaFluxo.getExecucaoFluxo().mapObjetoNegocio(objetos); this.instanciaFluxo.getObjetos(objetos); } ItemTrabalhoFluxoDao itemTrabalhoFluxoDao = new ItemTrabalhoFluxoDao(); setTransacaoDao(itemTrabalhoFluxoDao); IUsuarioGrupo usuarioGrupo = new UsuarioGrupo(); Map<String, String> mapEmails = new HashMap<>(); if (elementoFluxoDto.getDestinatariosEmail() != null && !elementoFluxoDto.getDestinatariosEmail().trim().equals("")) { String destinatarios[] = substituiParametros(((ElementoFluxoEmailDTO) elementoFluxoDto).getColDestinatarios(), objetos, ";"); if (destinatarios != null) { for (String destinatario : destinatarios) { if (mapEmails.get(destinatario) == null) { mapEmails.put(destinatario, destinatario); } } } } if (elementoFluxoDto.getGrupos() != null && !elementoFluxoDto.getGrupos().trim().equals("")) { String grupos[] = substituiParametros(((ElementoFluxoEmailDTO) elementoFluxoDto).getColGrupos(), objetos, ";"); if (grupos != null) { for (String grupo: grupos) { GrupoBpmDTO grupoDto = usuarioGrupo.recuperaGrupo(grupo); if (grupoDto != null && grupoDto.getEmails() != null) { for (String email : grupoDto.getEmails()) { if (mapEmails.get(email) == null) { mapEmails.put(email, email); } } } } } } if (elementoFluxoDto.getUsuarios() != null && !elementoFluxoDto.getUsuarios().trim().equals("")) { String usuarios[] = substituiParametros(((ElementoFluxoEmailDTO) elementoFluxoDto).getColUsuarios(), objetos, ";"); if (usuarios != null) { for (String usuario: usuarios) { UsuarioBpmDTO usuarioDto = usuarioGrupo.recuperaUsuario(usuario); if (usuarioDto != null && usuarioDto.getEmails() != null) { for (String email : usuarioDto.getEmails()) { if (mapEmails.get(email) == null) { mapEmails.put(email, email); } } } } } } if (mapEmails.size() > 0) { String[] destinatarios = new String[mapEmails.size()]; int i = 0; for (String email: mapEmails.values()) { destinatarios[i] = email; i ++; } instanciaFluxo.getExecucaoFluxo().enviaEmail(elementoFluxoDto.getModeloEmail(), destinatarios); } itemTrabalhoDto.setSituacao(Enumerados.SituacaoItemTrabalho.Executado.name()); itemTrabalhoFluxoDao.update(itemTrabalhoDto); } @Override public void registra() throws Exception { if (existe()) return; ItemTrabalhoFluxoDao itemTrabalhoDao = new ItemTrabalhoFluxoDao(); setTransacaoDao(itemTrabalhoDao); itemTrabalhoDto = new ItemTrabalhoFluxoDTO(); itemTrabalhoDto.setIdElemento(elementoFluxoDto.getIdElemento()); itemTrabalhoDto.setIdInstancia(instanciaFluxo.getIdInstancia()); itemTrabalhoDto.setDataHoraCriacao(UtilDatas.getDataHoraAtual()); itemTrabalhoDto.setSituacao(Enumerados.SituacaoItemTrabalho.Criado.name()); itemTrabalhoDto = (ItemTrabalhoFluxoDTO) itemTrabalhoDao.create(itemTrabalhoDto); } public String getTextoEmail() { return elementoFluxoDto.getTextoEmail(); } @Override public boolean executavel() { return true; } }