package br.com.centralit.citcorpore.ajaxForms; import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Set; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import br.com.centralit.citajax.html.DocumentHTML; import br.com.centralit.citcorpore.bean.AcordoNivelServicoDTO; import br.com.centralit.citcorpore.bean.AcordoServicoContratoDTO; import br.com.centralit.citcorpore.bean.ClienteDTO; import br.com.centralit.citcorpore.bean.ContratoDTO; import br.com.centralit.citcorpore.bean.ContratosGruposDTO; import br.com.centralit.citcorpore.bean.EmpregadoDTO; import br.com.centralit.citcorpore.bean.FornecedorDTO; import br.com.centralit.citcorpore.bean.GrupoEmpregadoDTO; import br.com.centralit.citcorpore.bean.ServicoContratoDTO; import br.com.centralit.citcorpore.bean.ServicoDTO; import br.com.centralit.citcorpore.bean.SolicitacaoServicoDTO; import br.com.centralit.citcorpore.bean.UsuarioDTO; import br.com.centralit.citcorpore.negocio.AcordoNivelServicoService; import br.com.centralit.citcorpore.negocio.AcordoServicoContratoService; import br.com.centralit.citcorpore.negocio.ClienteService; import br.com.centralit.citcorpore.negocio.ContratoService; import br.com.centralit.citcorpore.negocio.ContratosGruposService; import br.com.centralit.citcorpore.negocio.EmpregadoService; import br.com.centralit.citcorpore.negocio.FornecedorService; import br.com.centralit.citcorpore.negocio.GrupoEmpregadoService; import br.com.centralit.citcorpore.negocio.ServicoContratoService; import br.com.centralit.citcorpore.negocio.ServicoService; import br.com.centralit.citcorpore.negocio.SolicitacaoServicoService; import br.com.centralit.citcorpore.util.Enumerados; import br.com.centralit.citcorpore.util.Enumerados.TipoDate; import br.com.centralit.citcorpore.util.ParametroUtil; import br.com.centralit.citcorpore.util.WebUtil; import br.com.citframework.service.ServiceLocator; import br.com.citframework.util.Constantes; import br.com.citframework.util.UtilDatas; import br.com.citframework.util.UtilI18N; @SuppressWarnings({ "rawtypes", "unchecked" }) public class SolicitacaoServicoPortal extends SolicitacaoServicoMultiContratos { ContratoDTO contratoDtoAux = new ContratoDTO(); private Boolean acao = false; @Override public void load(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception { final 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; } final String SERVICO = ParametroUtil.getValorParametroCitSmartHashMap( Enumerados.ParametroSistema.SERVICO_PADRAO_SOLICITACAO, "0").trim(); final Integer idServico = SERVICO.equalsIgnoreCase("") ? 0 : Integer.valueOf(SERVICO); // Imprime os dados do solicitante informaDadosSolicitacao(document, request, response); carregaServico(document, request, response); final GrupoEmpregadoService grupoService = (GrupoEmpregadoService) ServiceLocator.getInstance().getService( GrupoEmpregadoService.class, null); final ContratosGruposService contratosGruposService = (ContratosGruposService) ServiceLocator.getInstance() .getService(ContratosGruposService.class, null); final ContratoService contratoService = (ContratoService) ServiceLocator.getInstance().getService( ContratoService.class, null); final ServicoContratoService servicoContratoService = (ServicoContratoService) ServiceLocator.getInstance() .getService(ServicoContratoService.class, null); final List<GrupoEmpregadoDTO> listGrupos = (ArrayList<GrupoEmpregadoDTO>) grupoService .findByIdEmpregado(usuario.getIdEmpregado()); final List<ServicoContratoDTO> listServicoContrato = new ArrayList<ServicoContratoDTO>(); final Set<ContratosGruposDTO> listContratosGrupos = new HashSet<ContratosGruposDTO>(); final Set colContratos = new HashSet<ContratoDTO>(); /* Realiza a listagem de grupos empregados */ if (listGrupos != null) { for (final GrupoEmpregadoDTO grupoEmpregadoDTO : listGrupos) { List<ContratosGruposDTO> temp = null; temp = (List<ContratosGruposDTO>) contratosGruposService.findByIdGrupo(grupoEmpregadoDTO.getIdGrupo()); if (temp != null) { for (final ContratosGruposDTO contratosGruposDTO : temp) { listContratosGrupos.add(contratosGruposDTO); } } } } if (listContratosGrupos != null) { for (final ContratosGruposDTO contratosGruposDTO : listContratosGrupos) { ServicoContratoDTO temp = null; temp = servicoContratoService.findByIdContratoAndIdServico(contratosGruposDTO.getIdContrato(), idServico); if (temp != null) { listServicoContrato.add(temp); } } } if (listServicoContrato != null) { for (final ServicoContratoDTO servicoContratoDTO : listServicoContrato) { List<ContratoDTO> temp2 = null; temp2 = (List<ContratoDTO>) contratoService.findByIdContrato(servicoContratoDTO.getIdContrato()); if (temp2 != null) { colContratos.add(temp2.get(0)); } } } final ClienteService clienteService = (ClienteService) ServiceLocator.getInstance().getService( ClienteService.class, null); final FornecedorService fornecedorService = (FornecedorService) ServiceLocator.getInstance().getService( FornecedorService.class, null); String COLABORADORES_VINC_CONTRATOS = ParametroUtil.getValorParametroCitSmartHashMap( br.com.centralit.citcorpore.util.Enumerados.ParametroSistema.COLABORADORES_VINC_CONTRATOS, "N"); if (COLABORADORES_VINC_CONTRATOS == null) { COLABORADORES_VINC_CONTRATOS = "N"; } Collection colContratosColab = null; if (COLABORADORES_VINC_CONTRATOS.equalsIgnoreCase("S")) { colContratosColab = contratosGruposService.findByIdEmpregado(usuario.getIdEmpregado()); } if (colContratos != null) { if (colContratos.size() > 1) { document.getSelectById("idContrato").addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione")); } else { acao = true; } for (final Iterator it = colContratos.iterator(); it.hasNext();) { final ContratoDTO contratoDto = (ContratoDTO) it.next(); if (contratoDto.getDeleted() == null || !contratoDto.getDeleted().equalsIgnoreCase("y")) { if (COLABORADORES_VINC_CONTRATOS.equalsIgnoreCase("S")) { // Se parametro de colaboradores por // contrato ativo, entao filtra. if (colContratosColab == null) { continue; } if (!isContratoInList(contratoDto.getIdContrato(), colContratosColab)) { continue; } } String nomeCliente = ""; String nomeForn = ""; ClienteDTO clienteDto = new ClienteDTO(); clienteDto.setIdCliente(contratoDto.getIdCliente()); clienteDto = (ClienteDTO) clienteService.restore(clienteDto); if (clienteDto != null) { nomeCliente = clienteDto.getNomeRazaoSocial(); } FornecedorDTO fornecedorDto = new FornecedorDTO(); fornecedorDto.setIdFornecedor(contratoDto.getIdFornecedor()); fornecedorDto = (FornecedorDTO) fornecedorService.restore(fornecedorDto); if (fornecedorDto != null) { nomeForn = fornecedorDto.getRazaoSocial(); } contratoDtoAux.setIdContrato(contratoDto.getIdContrato()); if (contratoDto.getSituacao().equalsIgnoreCase("A")) { final String nomeContrato = "" + contratoDto.getNumero() + " de " + UtilDatas.convertDateToString(TipoDate.DATE_DEFAULT, contratoDto.getDataContrato(), WebUtil.getLanguage(request)) + " (" + nomeCliente + " - " + nomeForn + ")"; document.getSelectById("idContrato").addOption("" + contratoDto.getIdContrato(), nomeContrato); } } } } final SolicitacaoServicoDTO solicitacaoServicoDto = (SolicitacaoServicoDTO) document.getBean(); if (solicitacaoServicoDto.getIdContrato() != null) { document.getSelectById("idGrupoAtual").setValue("" + solicitacaoServicoDto.getIdGrupoAtual()); } if (acao) { if (solicitacaoServicoDto.getIdSolicitacaoServico() == null || solicitacaoServicoDto.getIdSolicitacaoServico().intValue() == 0) { this.verificaImpactoUrgencia(document, request, response); } } } @Override public void verificaImpactoUrgencia(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception { final SolicitacaoServicoDTO solicitacaoServicoDto = (SolicitacaoServicoDTO) document.getBean(); if (solicitacaoServicoDto.getIdContrato() == null || solicitacaoServicoDto.getIdContrato().intValue() == 0) { solicitacaoServicoDto.setIdContrato(contratoDtoAux.getIdContrato()); } if (solicitacaoServicoDto.getIdServico() == null || solicitacaoServicoDto.getIdContrato() == null) { return; } final ServicoContratoService servicoContratoService = (ServicoContratoService) ServiceLocator.getInstance() .getService(ServicoContratoService.class, null); final ServicoContratoDTO servicoContratoDto = servicoContratoService.findByIdContratoAndIdServico( solicitacaoServicoDto.getIdContrato(), solicitacaoServicoDto.getIdServico()); if (servicoContratoDto != null) { final AcordoNivelServicoService acordoNivelServicoService = (AcordoNivelServicoService) ServiceLocator .getInstance().getService(AcordoNivelServicoService.class, null); AcordoNivelServicoDTO acordoNivelServicoDto = acordoNivelServicoService.findAtivoByIdServicoContrato( servicoContratoDto.getIdServicoContrato(), "T"); if (acordoNivelServicoDto == null) { // Se nao houver acordo especifico, ou seja, associado direto ao servicocontrato, entao busca um acordo // geral que esteja vinculado ao servicocontrato. final AcordoServicoContratoService acordoServicoContratoService = (AcordoServicoContratoService) ServiceLocator .getInstance().getService(AcordoServicoContratoService.class, null); final AcordoServicoContratoDTO acordoServicoContratoDTO = acordoServicoContratoService .findAtivoByIdServicoContrato(servicoContratoDto.getIdServicoContrato(), "T"); if (acordoServicoContratoDTO == null) { document.alert(UtilI18N.internacionaliza(request, "solicitacaoservico.validacao.tempoacordo")); return; } // Apos achar a vinculacao do acordo com o servicocontrato, entao faz um restore do acordo de nivel de // servico. acordoNivelServicoDto = new AcordoNivelServicoDTO(); acordoNivelServicoDto.setIdAcordoNivelServico(acordoServicoContratoDTO.getIdAcordoNivelServico()); acordoNivelServicoDto = (AcordoNivelServicoDTO) acordoNivelServicoService .restore(acordoNivelServicoDto); if (acordoNivelServicoDto == null) { // Se nao houver acordo especifico, ou seja, associado direto ao servicocontrato document.alert(UtilI18N.internacionaliza(request, "solicitacaoservico.validacao.tempoacordo")); return; } } if (acordoNivelServicoDto.getImpacto() != null) { document.getSelectById("impacto").setValue("" + acordoNivelServicoDto.getImpacto()); if (acordoNivelServicoDto.getPermiteMudarImpUrg() != null && acordoNivelServicoDto.getPermiteMudarImpUrg().equalsIgnoreCase("N")) { document.getSelectById("impacto").setDisabled(true); } } else { document.getSelectById("impacto").setValue("B"); } if (acordoNivelServicoDto.getUrgencia() != null) { document.getSelectById("urgencia").setValue("" + acordoNivelServicoDto.getUrgencia()); if (acordoNivelServicoDto.getPermiteMudarImpUrg() != null && acordoNivelServicoDto.getPermiteMudarImpUrg().equalsIgnoreCase("N")) { document.getSelectById("urgencia").setDisabled(true); } } else { document.getSelectById("urgencia").setValue("B"); } } else { document.getSelectById("impacto").setValue("B"); document.getSelectById("urgencia").setValue("B"); } } private boolean isContratoInList(final Integer idContrato, final Collection colContratosColab) { if (colContratosColab != null) { for (final Iterator it = colContratosColab.iterator(); it.hasNext();) { final ContratosGruposDTO contratosGruposDTO = (ContratosGruposDTO) it.next(); if (contratosGruposDTO.getIdContrato().intValue() == idContrato.intValue()) { return true; } } } return false; } /** * informaDadosSolicita��o - Informa dados iniciais da solicita��o no momento da abertura * * @author Flavio.Junior */ public void informaDadosSolicitacao(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception { final 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; } /* Setando o id do Solicitante diretamente d sess�o */ document.getElementById("idSolicitante").setValue(usuario.getIdEmpregado().toString()); final EmpregadoDTO eb = this.getEmpregadoService().restoreByIdEmpregado(usuario.getIdEmpregado()); if (eb != null) { final StringBuilder sb = new StringBuilder(); sb.append(eb.getNome() + ";" + eb.getEmail() + ";" + eb.getTelefone() + ";"); document.executeScript("informaDadosSolicitacao(\"" + sb.toString() + "\")"); } } public void salvar(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception { final 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(); final SolicitacaoServicoService solicitacaoServicoService = (SolicitacaoServicoService) ServiceLocator .getInstance().getService(SolicitacaoServicoService.class, WebUtil.getUsuarioSistema(request)); final EmpregadoService empregadoService = (EmpregadoService) ServiceLocator.getInstance().getService( EmpregadoService.class, WebUtil.getUsuarioSistema(request)); final String ORIGEM = ParametroUtil.getValorParametroCitSmartHashMap( Enumerados.ParametroSistema.ORIGEM_PADRAO_SOLICITACAO, ""); final Integer idOrigem = ORIGEM.trim().equalsIgnoreCase("") ? 0 : Integer.valueOf(ORIGEM.trim()); solicitacaoServicoDto.setIdOrigem(idOrigem); solicitacaoServicoDto.setUsuarioDto(usuario); solicitacaoServicoDto.setRegistradoPor(usuario.getNomeUsuario()); final EmpregadoDTO empregadoDto = empregadoService.restoreByIdEmpregado(usuario.getIdEmpregado()); solicitacaoServicoDto.setIdUnidade(empregadoDto.getIdUnidade()); try { if (solicitacaoServicoDto.getIdSolicitacaoServico() == null || solicitacaoServicoDto.getIdSolicitacaoServico().intValue() == 0) { solicitacaoServicoDto = (SolicitacaoServicoDTO) solicitacaoServicoService.create(solicitacaoServicoDto); // document.alert("Registro efetuado com sucesso. Solicita��o N.o: " + // solicitacaoServicoDto.getIdSolicitacaoServico() + " criada."); String comando = "mostraMensagemInsercao('" + UtilI18N.internacionaliza(request, "MSG05") + ".<br>" + UtilI18N.internacionaliza(request, "gerenciaservico.numerosolicitacao") + " <b><u>" + solicitacaoServicoDto.getIdSolicitacaoServico() + "</u></b> " + UtilI18N.internacionaliza(request, "citcorpore.comum.crida") + ".<br><br>" + UtilI18N.internacionaliza(request, "prioridade.prioridade") + ": " + solicitacaoServicoDto.getIdPrioridade(); if (solicitacaoServicoDto.getPrazoHH() > 0 || solicitacaoServicoDto.getPrazoMM() > 0) { comando = comando + " - SLA: " + solicitacaoServicoDto.getSLAStr() + ""; } comando = comando + "')"; document.executeScript(comando); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); return; } else { solicitacaoServicoService.updateInfo(solicitacaoServicoDto); document.alert(UtilI18N.internacionaliza(request, "MSG06")); } } catch (final Exception e) { String msgErro = e.getMessage(); msgErro = msgErro.replaceAll("java.lang.Exception:", ""); document.alert("" + msgErro); this.verificaImpactoUrgencia(document, request, response); document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); return; } document.getJanelaPopupById("JANELA_AGUARDE_MENU").hide(); document.executeScript("fechar();"); } public void carregaServico(final DocumentHTML document, final HttpServletRequest request, final HttpServletResponse response) throws Exception { final ServicoService servicoService = (ServicoService) ServiceLocator.getInstance().getService( ServicoService.class, null); final String SERVICO = ParametroUtil.getValorParametroCitSmartHashMap( Enumerados.ParametroSistema.SERVICO_PADRAO_SOLICITACAO, "0").trim(); final Integer idServico = SERVICO.equalsIgnoreCase("") ? 0 : Integer.valueOf(SERVICO); ServicoDTO servicoDto = new ServicoDTO(); servicoDto.setIdServico(idServico); servicoDto = (ServicoDTO) servicoService.restore(servicoDto); /* Setando o tipo de demanda de servi�o */ if (servicoDto != null) { document.getElementById("idTipoDemandaServico").setValue(servicoDto.getIdTipoDemandaServico().toString()); document.getElementById("idServico").setValue(servicoDto.getIdServico().toString()); document.getElementById("divServico").setValue(servicoDto.getNomeServico()); } else { document.getElementById("idTipoDemandaServico").setValue(""); document.getElementById("idServico").setValue(""); document.getElementById("divServico").setValue(""); document.alert(UtilI18N.internacionaliza(request, "solicitacaoservico.validacao.servicolocalizado")); } } }