package gcom.gui.atendimentopublico; import gcom.cadastro.cliente.Cliente; import gcom.cadastro.cliente.ClienteFone; import gcom.cadastro.cliente.ClienteImovel; import gcom.cadastro.cliente.FiltroCliente; import gcom.gui.ActionServletException; import gcom.gui.GcomAction; import gcom.interceptor.RegistradorOperacao; import gcom.seguranca.acesso.Operacao; import gcom.seguranca.acesso.usuario.Usuario; import gcom.seguranca.acesso.usuario.UsuarioAcao; import gcom.seguranca.acesso.usuario.UsuarioAcaoUsuarioHelper; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.commons.lang.StringUtils; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; /** * Descri��o da classe * @author Daniel Alves * @date 29/07/2010 */ public class AtualizarDadosClientesPopupAction extends GcomAction { /** * [UC1049] Atualizar dados Cadadastrais PROMAIS * * * @author Daniel Alves * @date 29/07/2010 * * @param actionMapping * @param actionForm * @param httpServletRequest * @param httpServletResponse * @return */ public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { ActionForward retorno = actionMapping.findForward("telaSucesso"); ExibirAtualizarDadosClientesPopupActionForm atualizarDadosClientesPopupActionForm = (ExibirAtualizarDadosClientesPopupActionForm) actionForm; HttpSession sessao = getSessao(httpServletRequest); Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado"); //caso a colecao de ClienteImovel nao esteja vazia if(atualizarDadosClientesPopupActionForm.getColecaoClienteImovel() != null && !atualizarDadosClientesPopupActionForm.getColecaoClienteImovel().isEmpty()){ //id do cliente imovel a ser altualizado String codClienteImovelAtualizado = atualizarDadosClientesPopupActionForm.getCodClienteImovel(); //verifica se foi selecionado algum cliente if(codClienteImovelAtualizado != null && !codClienteImovelAtualizado.equals("")){ Iterator iteratorClienteImovel = atualizarDadosClientesPopupActionForm.getColecaoClienteImovel().iterator(); boolean isAlterado = false; ClienteImovel clienteImovel = null; Cliente cliente = null; //Procura o cliente que foi selecionado no popup while (iteratorClienteImovel.hasNext()) { clienteImovel = (ClienteImovel) iteratorClienteImovel.next(); //se acho o clienteImovel que vai ser alterado na colecao if(clienteImovel.getId().toString().equals(codClienteImovelAtualizado)){ cliente = clienteImovel.getCliente(); //se o nome do cliente n�o estiver vazio. if(cliente.getNome() != null && !cliente.getNome().equals("")){ //Teste de altera��o do nome do cliente menos que 5 digitos do nome Integer dif = StringUtils.getLevenshteinDistance(cliente.getNome() ,atualizarDadosClientesPopupActionForm.getNovoNomeCliente()); if(dif > 5){ throw new ActionServletException("atencao.alteracao.maxima.caracteres"); }else if(dif != 0){ cliente.setNome(atualizarDadosClientesPopupActionForm.getNovoNomeCliente()); isAlterado = true; } //caso n�o tenha informado o cpf/cnpj. if(atualizarDadosClientesPopupActionForm.getCpfCnpjCliente() != null && atualizarDadosClientesPopupActionForm.getCpfCnpjCliente().equals("")){ throw new ActionServletException("atencao.cpf_nao_informado", cliente.getId().toString()); } else { //Pessoa F�sica if(atualizarDadosClientesPopupActionForm.getTipoPessoa().equals("1")){ //se houver alguma mudan�a no cpf if(!atualizarDadosClientesPopupActionForm.getCpfCnpjCliente().equals(cliente.getCpf())){ String cpf = atualizarDadosClientesPopupActionForm.getCpfCnpjCliente(); //valida o cpf if(Util.validacaoCPF(cpf)){ //verifica se existe o cliente if(!existeClienteCpf(cpf)){ cliente.setCpf(atualizarDadosClientesPopupActionForm.getCpfCnpjCliente()); isAlterado = true; } }else{ throw new ActionServletException("atencao.digito_verificador_cpf_nao_confere"); } } //Pessoa Jur�dica }else if(atualizarDadosClientesPopupActionForm.getTipoPessoa().equals("2")){ //se houver alguma mudan�a no cnpj if(!atualizarDadosClientesPopupActionForm.getCpfCnpjCliente().equals(cliente.getCnpj())){ String cnpj = atualizarDadosClientesPopupActionForm.getCpfCnpjCliente(); //valida o cnpj if(Util.validacaoCNPJ(cnpj)){ //verifica se existe o cliente if(!existeClienteCnpj(cnpj)){ cliente.setCnpj(atualizarDadosClientesPopupActionForm.getCpfCnpjCliente()); isAlterado = true; } }else{ throw new ActionServletException("atencao.digito_verificador_cnpj_nao_confere"); } } } } //Teste da remo��o de telefones do cliente. As demais altera��es do cliente, s�o realizadas no momento que s�o executadas. Collection colecaoRemoverFone = (Collection)atualizarDadosClientesPopupActionForm.getRemoverClienteFone(); if(colecaoRemoverFone != null && colecaoRemoverFone.size() > 0){ Iterator iteratorColecaoRemoverFone = colecaoRemoverFone.iterator(); ClienteFone clienteFoneRemover = null; while(iteratorColecaoRemoverFone.hasNext()){ clienteFoneRemover = (ClienteFone)iteratorColecaoRemoverFone.next(); //se o telefone a ser removido for do cliente selecionado para atualiza��o (ent�o remove clienteFone) if(clienteFoneRemover.getCliente().getId().equals(atualizarDadosClientesPopupActionForm.getIdCliente())){ getFachada().remover(clienteFoneRemover); } } atualizarDadosClientesPopupActionForm.setRemoverClienteFone(null); isAlterado = true; } //Teste de altera��o do telefone padr�o. HashMap mapTelefonePadrao = atualizarDadosClientesPopupActionForm.getTelefonePrincipal(); if(mapTelefonePadrao != null && mapTelefonePadrao.size() > 0){ String idClienteFonePadrao = procurarTelefonePadrao(cliente.getId().toString() , mapTelefonePadrao); if(idClienteFonePadrao != null && !idClienteFonePadrao.equals("")){ getFachada().atualizarTelefonePadrao(cliente.getId().toString(), idClienteFonePadrao); isAlterado = true; } } } else { throw new ActionServletException("atencao.nome_cliente_nao_informado", cliente.getId().toString()); } } } //Se foi modificado algum dado do cliente, atualiza o cliente. if(isAlterado){ RegistradorOperacao registradorOperacao = new RegistradorOperacao( Operacao.OPERACAO_ATUALIZAR_DADOS_CLIENTE_PROMAIS, cliente.getId(), cliente.getId(), new UsuarioAcaoUsuarioHelper( usuarioLogado,UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); registradorOperacao.registrarOperacao(cliente); getFachada().atualizarCliente(cliente,null,null,usuarioLogado); montarPaginaSucesso(httpServletRequest, "Cliente alterado com sucesso.", "Fechar Pop-up.", "exibirAtualizarDadosClientesPopupAction.do?fecharPopup=true"); }else{ montarPaginaSucesso(httpServletRequest, "Cliente n�o foi atualizado.", "Fechar Pop-up.", "exibirAtualizarDadosClientesPopupAction.do?fecharPopup=true"); } }else{ throw new ActionServletException("atencao.cliente_nao_selecionado"); } }else{ montarPaginaSucesso(httpServletRequest, "Cliente n�o foi atualizado.", "Fechar Pop-up.", "exibirAtualizarDadosClientesPopupAction.do?fecharPopup=true"); } return retorno; } /** * @author Daniel Alves * @date 01/09/2010 * @param cpf * @return boolean */ private boolean existeClienteCpf(String cpf){ boolean existeCliente = false; FiltroCliente filtroCliente = new FiltroCliente(); filtroCliente.adicionarParametro(new ParametroSimples(FiltroCliente.CPF, cpf)); Collection colecao = (Collection) getFachada().pesquisar(filtroCliente, Cliente.class.getName()); Cliente cliente = (Cliente)Util.retonarObjetoDeColecao(colecao); if(colecao != null && colecao.size() > 0){ existeCliente = true; throw new ActionServletException("atencao.cpf.cliente.ja_cadastrado", cliente.getId().toString()); } return existeCliente; } /** * @author Daniel Alves * @date 01/09/2010 * @param cnpj * @return boolean */ private boolean existeClienteCnpj(String cnpj){ boolean existeCliente = false; FiltroCliente filtroCliente = new FiltroCliente(); filtroCliente.adicionarParametro(new ParametroSimples(FiltroCliente.CNPJ, cnpj)); Collection colecao = (Collection) getFachada().pesquisar(filtroCliente, Cliente.class.getName()); Cliente cliente = (Cliente)Util.retonarObjetoDeColecao(colecao); if(colecao != null && colecao.size() > 0){ existeCliente = true; throw new ActionServletException("atencao.cnpj.cliente.ja_cadastrado", cliente.getId().toString()); } return existeCliente; } private String procurarTelefonePadrao(String idCliente, HashMap mapTelefonePadrao){ if(mapTelefonePadrao != null && mapTelefonePadrao.size() >0){ return (String)mapTelefonePadrao.get("idCliente"); }else{ return ""; } } }