/** * */ package br.com.centralit.citcorpore.ajaxForms; import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; 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.ContatoSolicitacaoServicoDTO; import br.com.centralit.citcorpore.bean.EmpregadoDTO; import br.com.centralit.citcorpore.bean.GrupoEmpregadoDTO; import br.com.centralit.citcorpore.bean.PesquisaSatisfacaoDTO; import br.com.centralit.citcorpore.bean.SolicitacaoServicoDTO; import br.com.centralit.citcorpore.mail.MensagemEmail; import br.com.centralit.citcorpore.negocio.ContatoSolicitacaoServicoService; import br.com.centralit.citcorpore.negocio.EmpregadoService; import br.com.centralit.citcorpore.negocio.GrupoEmpregadoService; import br.com.centralit.citcorpore.negocio.PesquisaSatisfacaoService; import br.com.centralit.citcorpore.negocio.SolicitacaoServicoService; import br.com.centralit.citcorpore.util.CITCorporeUtil; import br.com.centralit.citcorpore.util.CriptoUtils; import br.com.centralit.citcorpore.util.Enumerados; 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.excecao.ServiceException; import br.com.citframework.service.ServiceLocator; import br.com.citframework.util.Constantes; import br.com.citframework.util.UtilI18N; import br.com.citframework.util.UtilStrings; /** * @author valdoilo * */ @SuppressWarnings("rawtypes") public class PesquisaSatisfacao extends AjaxFormAction { SolicitacaoServicoDTO solicitacaoServicoDTO; @Override public void load(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { HTMLForm form = document.getForm("form"); PesquisaSatisfacaoDTO pesquisaSatisfacaoDto = (PesquisaSatisfacaoDTO) document.getBean(); // ///////// apenas para testes /* * pesquisaSatisfacaoDto.setIdPesquisaSatisfacao(2); pesquisaSatisfacaoDto.setIdSolicitacaoServico(2); pesquisaSatisfacaoDto.setHash(CriptoUtils.generateHash("CODED" + * pesquisaSatisfacaoDto.getIdSolicitacaoServico(), "MD5")); */ // ///////// ArrayList<PesquisaSatisfacaoDTO> dtoListTemporario = (ArrayList<PesquisaSatisfacaoDTO>) getPesquisaSatisfacaoService().getPesquisaByIdSolicitacao( pesquisaSatisfacaoDto.getIdSolicitacaoServico()); if (pesquisaSatisfacaoDto.getHash() == null) { document.alert("Aten��o! N�o foi poss�vel identificar o c�digo da valida��o para a pesquisa de satisfa��o!"); document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'"); return; } String idHashValidacao = CriptoUtils.generateHash("CODED" + pesquisaSatisfacaoDto.getIdSolicitacaoServico(), "MD5"); if (!pesquisaSatisfacaoDto.getHash().equalsIgnoreCase(idHashValidacao)) { document.alert("Aten��o! O c�digo de valida��o da pesquisa de satisfa��o n�o confere!"); document.executeScript("window.location = '" + Constantes.getValue("SERVER_ADDRESS") + request.getContextPath() + "'"); return; } this.solicitacaoServicoDTO = new SolicitacaoServicoDTO(); this.solicitacaoServicoDTO.setIdSolicitacaoServico(pesquisaSatisfacaoDto.getIdSolicitacaoServico()); this.solicitacaoServicoDTO = (SolicitacaoServicoDTO) this.getSolicitacaoServicoService(request).restore(this.solicitacaoServicoDTO); if (this.solicitacaoServicoDTO != null) { document.getElementById("divId").setInnerHTML("" + pesquisaSatisfacaoDto.getIdSolicitacaoServico() + " - " + formataDataHora(this.solicitacaoServicoDTO.getDataHoraSolicitacao())); request.setAttribute("descricao", this.solicitacaoServicoDTO.getDescricao()); request.setAttribute("resposta", UtilStrings.unescapeJavaString(this.solicitacaoServicoDTO.getResposta())); pesquisaSatisfacaoDto.setIdSolicitacaoServico(this.solicitacaoServicoDTO.getIdSolicitacaoServico()); this.gerarComboNotas(document, request); form.setValues(pesquisaSatisfacaoDto); if (dtoListTemporario != null && dtoListTemporario.size() > 0) { form.setValues(dtoListTemporario.get(0)); form.lockForm(); document.executeScript("$('#btnEnviar').addClass('disabledButtons')"); if (pesquisaSatisfacaoDto.getFrame() == null) document.executeScript("showing('pagemsg');"); else document.executeScript("showing('page');"); } else { document.executeScript("showing('page');"); } } document.executeScript("JANELA_AGUARDE_MENU.hide()"); } public void restore(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { } /** * Grava uma nova pesquisa de satisfa��o. * * @param document * @param request * @param response * @throws Exception */ public void save(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { PesquisaSatisfacaoDTO pesquisaSatisfacaoDto = (PesquisaSatisfacaoDTO) document.getBean(); boolean avaliacaoRuimOuRegular = pesquisaSatisfacaoDto.getNota() == Enumerados.Nota.RUIM.getNota().intValue() || pesquisaSatisfacaoDto.getNota() == Enumerados.Nota.REGULAR.getNota().intValue(); if (avaliacaoRuimOuRegular && (pesquisaSatisfacaoDto.getComentario() == null || pesquisaSatisfacaoDto.getComentario().trim().isEmpty())) { document.alert("Comente sua avalia��o!"); } else { if (pesquisaSatisfacaoDto.getIdSolicitacaoServico() != null) { this.getPesquisaSatisfacaoService().create(pesquisaSatisfacaoDto); if (avaliacaoRuimOuRegular) { GrupoEmpregadoService grupoEmpregadoService = (GrupoEmpregadoService) ServiceLocator.getInstance().getService(GrupoEmpregadoService.class, null); EmpregadoService empregadoService = (EmpregadoService) ServiceLocator.getInstance().getService(EmpregadoService.class, null); SolicitacaoServicoService solicitacaoServicoService = (SolicitacaoServicoService) ServiceLocator.getInstance().getService(SolicitacaoServicoService.class, null); ContatoSolicitacaoServicoService contatoSolicitacaoServicoService = (ContatoSolicitacaoServicoService) ServiceLocator.getInstance().getService( ContatoSolicitacaoServicoService.class, null); String idModeloEmailAvisarPesquisaSatisfacaoRuimOuRegular = ParametroUtil.getValorParametroCitSmartHashMap( ParametroSistema.ID_MODELO_EMAIL_AVISAR_PESQUISA_SATISFACAO_RUIM_OU_REGULAR, "54"); Map<String, String> map = new HashMap<String, String>(); if (pesquisaSatisfacaoDto.getNota() == Enumerados.Nota.RUIM.getNota().intValue()) { map.put("NOTA", Enumerados.Nota.RUIM.getDescricao()); } else { map.put("NOTA", Enumerados.Nota.REGULAR.getDescricao()); } SolicitacaoServicoDTO solicitacaoServico = solicitacaoServicoService.restoreAll(pesquisaSatisfacaoDto.getIdSolicitacaoServico()); ContatoSolicitacaoServicoDTO contatoSolicitacaoServicoDTO = new ContatoSolicitacaoServicoDTO(); contatoSolicitacaoServicoDTO.setIdcontatosolicitacaoservico(solicitacaoServico.getIdContatoSolicitacaoServico()); contatoSolicitacaoServicoDTO = (ContatoSolicitacaoServicoDTO) contatoSolicitacaoServicoService.restore(contatoSolicitacaoServicoDTO); map.put("USUARIO", contatoSolicitacaoServicoDTO.getNomecontato()); map.put("IDSOLICITACAOSERVICO", pesquisaSatisfacaoDto.getIdSolicitacaoServico().toString()); map.put("COMENTARIO", pesquisaSatisfacaoDto.getComentario()); MensagemEmail mensagem = new MensagemEmail(Integer.parseInt(idModeloEmailAvisarPesquisaSatisfacaoRuimOuRegular), map); try { String idGrupoAvisarPesquisaSatisfacaoRuimOuRegular = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.ID_GRUPO_PADRAO_AVISAR_PESQUISA_SATISFACAO_RUIM_OU_REGULAR, ""); Collection<GrupoEmpregadoDTO> grupoEmpregados = grupoEmpregadoService.findByIdGrupo(Integer.parseInt(idGrupoAvisarPesquisaSatisfacaoRuimOuRegular)); for (GrupoEmpregadoDTO grupoEmpregado : grupoEmpregados) { EmpregadoDTO empregado = new EmpregadoDTO(); empregado.setIdEmpregado(grupoEmpregado.getIdEmpregado()); empregado = (EmpregadoDTO) empregadoService.restoreEmpregadoSeAtivo(empregado); if (empregado != null && empregado.getEmail() != null && !empregado.getEmail().trim().equalsIgnoreCase("")) { mensagem.envia(empregado.getEmail(), "", ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.RemetenteNotificacoesSolicitacao, "10")); } } } catch (Exception e) { } } } CITCorporeUtil.limparFormulario(document); if (pesquisaSatisfacaoDto.getFrame().trim().equals("sim")) { document.executeScript("fecharPopup()"); document.executeScript("parent.fechaModalOpiniaoEPesquisa()"); } else { document.executeScript("hidden('page');"); document.executeScript("showing('pagemsg');"); /** * Ao clicar em OK a janela fecha. * Melhoria a pedido de Igor Oliveira nucleo de consultoria * Solicitacao 117595 * **/ } document.alert("Obrigado por participar. Sua opini�o � muito importante!"); document.executeScript("closeW()"); } } /** * Retorna service de pesquisaSatisfacao. * * @return <code>PesquisaSatisfacaoService</code> * @throws ServiceException * @throws Exception * @author valdoilo */ public PesquisaSatisfacaoService getPesquisaSatisfacaoService() throws ServiceException, Exception { return (PesquisaSatisfacaoService) ServiceLocator.getInstance().getService(PesquisaSatisfacaoService.class, null); } /** * Retorna service de solicitacao servico. * * @return SolicitacaoServicoService * @throws ServiceException * @throws Exception * @author valdoilo */ public SolicitacaoServicoService getSolicitacaoServicoService(HttpServletRequest request) throws ServiceException, Exception { return (SolicitacaoServicoService) ServiceLocator.getInstance().getService(SolicitacaoServicoService.class, WebUtil.getUsuarioSistema(request)); } @Override public Class getBeanClass() { return PesquisaSatisfacaoDTO.class; } /** * Gera Combo de Notas da Pesquisa de satisfa��o. * * @param document * @throws Exception * @author valdoilo.damasceno */ public void gerarComboNotas(DocumentHTML document, HttpServletRequest request) throws Exception { HTMLSelect comboNota = (HTMLSelect) document.getSelectById("comboNotas"); comboNota.removeAllOptions(); comboNota.addOption("", UtilI18N.internacionaliza(request, "citcorpore.comum.selecione")); for (Enumerados.Nota nota : Enumerados.Nota.values()) { comboNota.addOption(nota.getNota().toString(), UtilI18N.internacionaliza(request, nota.getChaveInternacionalizacao())); } } private String formataDataHora(Timestamp dateDate) { SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); return df.format(dateDate); } /** * Internacionaliza a p�gina de pesquisa de satisfa��o * * @param document * @param request * @param response * @throws Exception * @author rodrigo.acorse */ public void internacionaliza(DocumentHTML document, HttpServletRequest request, HttpServletResponse response) throws Exception { PesquisaSatisfacaoDTO bean = (PesquisaSatisfacaoDTO) document.getBean(); String IDIOMAPADRAO = ParametroUtil.getValorParametroCitSmartHashMap(Enumerados.ParametroSistema.IDIOMAPADRAO," "); if(IDIOMAPADRAO == null){ IDIOMAPADRAO= ""; } if(bean != null){ if(bean.getLocale() != null){ WebUtil.setLocale(bean.getLocale().trim(), request); //XmlReadLookup.getInstance(new Locale(bean.getLocale().trim())); }else{ WebUtil.setLocale(IDIOMAPADRAO, request); //XmlReadLookup.getInstance(new Locale(IDIOMAPADRAO)); } }else{ WebUtil.setLocale(IDIOMAPADRAO, request); //XmlReadLookup.getInstance(new Locale(IDIOMAPADRAO)); } document.executeScript("window.location.reload()"); } }