package br.com.centralit.citcorpore.ajaxForms; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.Set; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import br.com.centralit.bpm.util.Enumerados; import br.com.centralit.citajax.html.AjaxFormAction; import br.com.centralit.citajax.html.DocumentHTML; import br.com.centralit.citajax.html.HTMLForm; import br.com.centralit.citajax.html.HTMLSelect; import br.com.centralit.citcorpore.bean.EmpregadoDTO; import br.com.centralit.citcorpore.bean.GrupoDTO; import br.com.centralit.citcorpore.bean.GrupoEmpregadoDTO; import br.com.centralit.citcorpore.bean.SolicitacaoServicoDTO; import br.com.centralit.citcorpore.bean.TipoDemandaServicoDTO; import br.com.centralit.citcorpore.bean.UsuarioDTO; import br.com.centralit.citcorpore.mail.MensagemEmail; import br.com.centralit.citcorpore.negocio.EmpregadoService; import br.com.centralit.citcorpore.negocio.ExecucaoSolicitacaoService; import br.com.centralit.citcorpore.negocio.GrupoEmpregadoService; import br.com.centralit.citcorpore.negocio.GrupoService; import br.com.centralit.citcorpore.negocio.SolicitacaoServicoService; import br.com.centralit.citcorpore.negocio.TipoDemandaServicoService; import br.com.centralit.citcorpore.negocio.UsuarioService; import br.com.centralit.citcorpore.util.Enumerados.ParametroSistema; import br.com.centralit.citcorpore.util.ParametroUtil; import br.com.centralit.citcorpore.util.WebUtil; import br.com.citframework.dto.IDto; import br.com.citframework.excecao.LogicException; import br.com.citframework.excecao.ServiceException; import br.com.citframework.service.ServiceLocator; import br.com.citframework.util.Constantes; import br.com.citframework.util.UtilI18N; public class DelegacaoTarefa extends AjaxFormAction { private EmpregadoService empregadoService; private SolicitacaoServicoService solicitacaoServicoService; @SuppressWarnings("rawtypes") @Override public Class getBeanClass() { return SolicitacaoServicoDTO.class; } private EmpregadoService getEmpregadoService() throws ServiceException, Exception { if (empregadoService == null) { empregadoService = (EmpregadoService) ServiceLocator.getInstance().getService(EmpregadoService.class, null); } return empregadoService; } private SolicitacaoServicoService getSolicitacaoServicoService(HttpServletRequest request) throws ServiceException, Exception { if (solicitacaoServicoService == null) { solicitacaoServicoService = (SolicitacaoServicoService) ServiceLocator.getInstance().getService(SolicitacaoServicoService.class, WebUtil.getUsuarioSistema(request)); } return solicitacaoServicoService; } @SuppressWarnings("rawtypes") @Override public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { UsuarioDTO usuario = WebUtil.getUsuario(request); if (usuario == null) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada")); document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'"); return; } SolicitacaoServicoDTO solicitacaoServicoDto = (SolicitacaoServicoDTO) document.getBean(); if (solicitacaoServicoDto.getIdTarefa() == null) return; /* Recebendo os itens antes do restore */ Integer idTarefa = solicitacaoServicoDto.getIdTarefa(); request.setAttribute("nomeTarefa", solicitacaoServicoDto.getNomeTarefa()); HTMLForm form = document.getForm("form"); form.clear(); HTMLSelect idGrupoDestino = (HTMLSelect) document.getSelectById("idGrupoDestino"); idGrupoDestino.removeAllOptions(); idGrupoDestino.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione")); GrupoService grupoSegurancaService = (GrupoService) ServiceLocator.getInstance().getService(GrupoService.class, null); SolicitacaoServicoService solicitacaoServicoService = (SolicitacaoServicoService) ServiceLocator.getInstance().getService(SolicitacaoServicoService.class, WebUtil.getUsuarioSistema(request)); solicitacaoServicoDto = solicitacaoServicoService.restoreAll(solicitacaoServicoDto.getIdSolicitacaoServico()); Collection listGruposContrato = null; if (solicitacaoServicoDto != null) { if (solicitacaoServicoDto.getIdContrato() != null) { listGruposContrato = grupoSegurancaService.listGruposPorUsuario(usuario.getIdUsuario()); } if (listGruposContrato != null) { idGrupoDestino.addOptions(listGruposContrato, "idGrupo", "nome", null); } request.setAttribute("dataHoraSolicitacao", solicitacaoServicoDto.getDataHoraSolicitacaoStr()); solicitacaoServicoDto.setIdTarefa(idTarefa); solicitacaoServicoDto.setAcaoFluxo(Enumerados.ACAO_DELEGAR); carregaUsuarios2(document, solicitacaoServicoDto, request); form.setValues(solicitacaoServicoDto); } } public void save(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { UsuarioDTO usuario = WebUtil.getUsuario(request); if (usuario == null) { document.alert(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada")); document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'"); return; } SolicitacaoServicoDTO solicitacaoServicoDto = (SolicitacaoServicoDTO) document.getBean(); if (solicitacaoServicoDto.getIdTarefa() == null || (solicitacaoServicoDto.getIdUsuarioDestino() == null && solicitacaoServicoDto.getIdGrupoDestino() == null)) return; String usuarioDestino = null; String grupoDestino = null; UsuarioDTO usuarioDestinoDto = new UsuarioDTO(); if (solicitacaoServicoDto.getIdUsuarioDestino() != null) { UsuarioService usuarioService = (UsuarioService) ServiceLocator.getInstance().getService(UsuarioService.class, null); usuarioDestinoDto.setIdUsuario(solicitacaoServicoDto.getIdUsuarioDestino()); usuarioDestinoDto = (UsuarioDTO) usuarioService.restore(usuarioDestinoDto); if (usuarioDestinoDto != null) usuarioDestino = usuarioDestinoDto.getLogin(); } GrupoDTO grupoDestinoDto = null; if (solicitacaoServicoDto.getIdGrupoDestino() != null) { GrupoService grupoService = (GrupoService) ServiceLocator.getInstance().getService(GrupoService.class, null); grupoDestinoDto = new GrupoDTO(); grupoDestinoDto.setIdGrupo(solicitacaoServicoDto.getIdGrupoDestino()); grupoDestinoDto = (GrupoDTO) grupoService.restore(grupoDestinoDto); if (grupoDestinoDto != null) grupoDestino = grupoDestinoDto.getSigla(); } try { String enviarNotificacao = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.NOTIFICAR_GRUPO_RECEPCAO_SOLICITACAO, "N"); if (enviarNotificacao.equalsIgnoreCase("S") && grupoDestinoDto != null) { enviaEmailGrupo(request, Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.ID_MODELO_EMAIL_GRUPO_DESTINO, null)), grupoDestinoDto, solicitacaoServicoDto); } //Caso n�o tenha um grupo e tenha apenas o usu�rio de destino else if(solicitacaoServicoDto.getIdUsuarioDestino() != null) { String remetente = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.RemetenteNotificacoesSolicitacao, null); if (remetente == null) throw new LogicException(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada")); solicitacaoServicoDto = (SolicitacaoServicoDTO) getSolicitacaoServicoService(request).restoreAll(solicitacaoServicoDto.getIdSolicitacaoServico()); TipoDemandaServicoService tipoDemandaServicoService = (TipoDemandaServicoService) ServiceLocator.getInstance().getService(TipoDemandaServicoService.class, WebUtil.getUsuarioSistema(request)); TipoDemandaServicoDTO tipoDemandaServicoDTO = new TipoDemandaServicoDTO(); if (solicitacaoServicoDto.getIdTipoDemandaServico() != null) { tipoDemandaServicoDTO.setIdTipoDemandaServico(solicitacaoServicoDto.getIdTipoDemandaServico()); tipoDemandaServicoDTO = (TipoDemandaServicoDTO) tipoDemandaServicoService.restore(tipoDemandaServicoDTO); solicitacaoServicoDto.setDemanda(tipoDemandaServicoDTO.getNomeTipoDemandaServico()); } solicitacaoServicoDto.setServico(solicitacaoServicoService.listaServico(solicitacaoServicoDto.getIdSolicitacaoServico())); MensagemEmail mensagem = new MensagemEmail(Integer.parseInt(ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.ID_MODELO_EMAIL_GRUPO_DESTINO, null)), new IDto[] { solicitacaoServicoDto }); try { EmpregadoDTO aux = null; aux = (EmpregadoDTO) getEmpregadoService().restoreByIdEmpregado(usuarioDestinoDto.getIdEmpregado()); if (aux != null && aux.getEmail() != null && !aux.getEmail().trim().equalsIgnoreCase("")) { mensagem.envia(aux.getEmail(), "", remetente); } } catch (Exception e) { System.out.println("N�o foi poss�vel enviar o e-mail. \n" + e.getMessage()); } } } catch (NumberFormatException e) { System.out.println("N�o h� modelo de e-mail setado nos par�metros."); } ExecucaoSolicitacaoService execucaoFluxoService = (ExecucaoSolicitacaoService) ServiceLocator.getInstance().getService(ExecucaoSolicitacaoService.class, null); execucaoFluxoService.delegaTarefa(usuario.getLogin(), solicitacaoServicoDto.getIdTarefa(), usuarioDestino, grupoDestino); document.executeScript("parent.refreshTelaGerenciamento();"); } /** * @param idModeloEmail * @throws Exception */ public void enviaEmailGrupo(HttpServletRequest request, Integer idModeloEmail, GrupoDTO grupoDestino, SolicitacaoServicoDTO solicitacaoServicoDto) throws Exception { if (grupoDestino == null) { return; } if (idModeloEmail == null) { return; } /* * String enviaEmail = ParametroUtil.getValue(ParametroSistema.EnviaEmailFluxo, "N"); if (!enviaEmail.equalsIgnoreCase("S")){ return; } */ ArrayList<EmpregadoDTO> empregados = (ArrayList<EmpregadoDTO>) getEmpregadoService().listEmpregadosByIdGrupo(grupoDestino.getIdGrupo()); String remetente = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.RemetenteNotificacoesSolicitacao, null); if (remetente == null) throw new LogicException(UtilI18N.internacionaliza(request, "citcorpore.comum.sessaoExpirada")); solicitacaoServicoDto = (SolicitacaoServicoDTO) getSolicitacaoServicoService(request).restoreAll(solicitacaoServicoDto.getIdSolicitacaoServico()); TipoDemandaServicoService tipoDemandaServicoService = (TipoDemandaServicoService) ServiceLocator.getInstance().getService(TipoDemandaServicoService.class, WebUtil.getUsuarioSistema(request)); TipoDemandaServicoDTO tipoDemandaServicoDTO = new TipoDemandaServicoDTO(); if (solicitacaoServicoDto.getIdTipoDemandaServico() != null) { tipoDemandaServicoDTO.setIdTipoDemandaServico(solicitacaoServicoDto.getIdTipoDemandaServico()); tipoDemandaServicoDTO = (TipoDemandaServicoDTO) tipoDemandaServicoService.restore(tipoDemandaServicoDTO); solicitacaoServicoDto.setDemanda(tipoDemandaServicoDTO.getNomeTipoDemandaServico()); } solicitacaoServicoDto.setServico(solicitacaoServicoService.listaServico(solicitacaoServicoDto.getIdSolicitacaoServico())); MensagemEmail mensagem = new MensagemEmail(idModeloEmail, new IDto[] { solicitacaoServicoDto }); try { EmpregadoDTO aux = null; for (EmpregadoDTO e : empregados) { aux = (EmpregadoDTO) getEmpregadoService().restore(e); if (aux != null && aux.getEmail() != null && !aux.getEmail().trim().equalsIgnoreCase("")) { mensagem.envia(aux.getEmail(), "", remetente); } } } catch (Exception e) { } } public void carregaUsuarios(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { SolicitacaoServicoDTO solicitacaoServicoDto = (SolicitacaoServicoDTO) document.getBean(); carregaUsuarios2(document, solicitacaoServicoDto, request); } public void carregaUsuarios2(DocumentHTML document, SolicitacaoServicoDTO solicitacaoServicoDto, HttpServletRequest request) throws Exception { HTMLSelect idUsuarioDestino = (HTMLSelect) document.getSelectById("idUsuarioDestino"); UsuarioDTO usuario = WebUtil.getUsuario(request); idUsuarioDestino.removeAllOptions(); GrupoEmpregadoService grupoEmpregadoService = (GrupoEmpregadoService) ServiceLocator.getInstance().getService(GrupoEmpregadoService.class, null); GrupoService grupoSegurancaService = (GrupoService) ServiceLocator.getInstance().getService(GrupoService.class, null); ArrayList<GrupoEmpregadoDTO> listGrupoEmpregado = new ArrayList<GrupoEmpregadoDTO>(); Collection<GrupoDTO> listGruposContrato = null; Collection<GrupoEmpregadoDTO> listGruposContratoAux = null; if (solicitacaoServicoDto.getIdContrato() != null) { listGruposContrato = grupoSegurancaService.listGruposPorUsuario(usuario.getIdUsuario()); } Set<GrupoEmpregadoDTO> listGrupoEmpregadoAux= new HashSet<GrupoEmpregadoDTO>(); if (solicitacaoServicoDto != null && listGruposContrato!= null) { for (GrupoDTO grupoDTO : listGruposContrato) { listGruposContratoAux = grupoEmpregadoService.findByIdGrupo(grupoDTO.getIdGrupo()); for (GrupoEmpregadoDTO grupoEmpregadoDTO : listGruposContratoAux) { listGrupoEmpregadoAux.add(grupoEmpregadoDTO); } } listGrupoEmpregado.clear(); listGrupoEmpregado.addAll(listGrupoEmpregadoAux); if (listGrupoEmpregado != null) { idUsuarioDestino.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione")); UsuarioService usuarioService = (UsuarioService) ServiceLocator.getInstance().getService(UsuarioService.class, null); for (GrupoEmpregadoDTO grupoEmpregadoDto : listGrupoEmpregado) { UsuarioDTO usuarioDto = usuarioService.restoreByIdEmpregado(grupoEmpregadoDto.getIdEmpregado()); if (usuarioDto != null) { idUsuarioDestino.addOption("" + usuarioDto.getIdUsuario(), usuarioDto.getLogin() + " - " + usuarioDto.getNomeUsuario()); } } } } } }