package gcom.gui.atendimentopublico; import gcom.cadastro.cliente.Cliente; import gcom.cadastro.cliente.ClienteImovel; import gcom.cadastro.cliente.FiltroCliente; import gcom.cadastro.cliente.IClienteFone; 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.ConstantesSistema; import gcom.util.Util; import gcom.util.filtro.ParametroSimples; import gcom.util.filtro.ParametroSimplesDiferenteDe; import java.util.Collection; 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 AtualizarDadosImovelPopupPROMAISAction 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("telaSucessoPopup"); ExibirAtualizarDadosClientesPopupActionForm atualizarDadosClientesPopupActionForm = (ExibirAtualizarDadosClientesPopupActionForm) actionForm; HttpSession sessao = getSessao(httpServletRequest); Usuario usuarioLogado = (Usuario) sessao.getAttribute("usuarioLogado"); //int idImovel = Integer.valueOf(atualizarDadosClientesPopupActionForm.getMatricula()); //Imovel imovel = (Imovel) getFachada().pesquisarImovel(idImovel); //Atualiza��o do Cliente boolean clienteAtualizado = this.alterarDadosCliente(atualizarDadosClientesPopupActionForm,usuarioLogado,sessao); boolean imovelAtualizado = false; //se for modificado o nome da conta. /*if(imovel != null){ if(atualizarDadosClientesPopupActionForm.getNomeConta() != null){ boolean isAlterado = false; //se o nome da conta for apagado. if(imovel.getNomeImovel()!=null && !imovel.getNomeImovel().equals("") && atualizarDadosClientesPopupActionForm.getNomeConta().trim().equals("")){ FiltroClienteImovel filtroClienteImovel = new FiltroClienteImovel(); filtroClienteImovel.adicionarParametro( new ParametroSimples(FiltroClienteImovel.IMOVEL_ID, idImovel)); filtroClienteImovel.adicionarParametro( new ParametroSimples(FiltroClienteImovel.CLIENTE_RELACAO_TIPO, ClienteRelacaoTipo.USUARIO)); filtroClienteImovel.adicionarParametro( new ParametroNulo(FiltroClienteImovel.CLIENTE_IMOVEL_FIM_RELACAO_MOTIVO)); filtroClienteImovel.adicionarCaminhoParaCarregamentoEntidade(FiltroClienteImovel.CLIENTE); Collection colecaoClienteImovel = this.getFachada().pesquisar(filtroClienteImovel, ClienteImovel.class.getName()); if(!Util.isVazioOrNulo(colecaoClienteImovel)){ ClienteImovel clienteImovel = (ClienteImovel) Util.retonarObjetoDeColecao(colecaoClienteImovel); atualizarIndicadorClienteImovel(clienteImovel.getCliente().getId().toString()); } imovel.setNomeImovel(atualizarDadosClientesPopupActionForm.getNomeConta()); isAlterado = true; } if(imovel.getNomeImovel()!=null && !atualizarDadosClientesPopupActionForm.getNomeConta().trim().equals("") && !imovel.getNomeImovel().equals(atualizarDadosClientesPopupActionForm.getNomeConta().trim())){ imovel.setNomeImovel(atualizarDadosClientesPopupActionForm.getNomeConta()); isAlterado = true; } if(isAlterado){ //Registrar Transa��o //-----------------REGISTRAR TRANSA��O----------------------- RegistradorOperacao registradorOperacao = new RegistradorOperacao( Operacao.OPERACAO_ATUALIZAR_DADOS_IMOVEL_PROMAIS, imovel.getId(), imovel.getId(), new UsuarioAcaoUsuarioHelper( usuarioLogado,UsuarioAcao.USUARIO_ACAO_EFETUOU_OPERACAO)); registradorOperacao.registrarOperacao(imovel); //---------------FIM REGISTRAR TRANSA��O--------------------- getFachada().atualizar(imovel); imovelAtualizado = true; } } }*/ String mensagem = ""; boolean semAlteracao = false; if(clienteAtualizado && imovelAtualizado){ mensagem = "Cliente e Im�vel alterado com sucesso"; }else if(clienteAtualizado){ mensagem = "Cliente alterado com sucesso"; }else if(imovelAtualizado) { mensagem = "Im�vel alterado com sucesso"; }else{ mensagem = "Cliente e Im�vel n�o foi alterado"; semAlteracao = true; } if(semAlteracao){ // manda o erro para a p�gina no request atual reportarErros(httpServletRequest, "atencao.imovel.cliente.sem_alteracao"); // seta o mapeamento de retorno para a tela de aten��o de popup retorno = actionMapping.findForward("telaAtencaoPopup"); }else{ montarPaginaSucesso(httpServletRequest, mensagem, "", ""); } return retorno; } /* *//** * @author Daniel Alves * @date 02/09/2010 * @param idClienteImovel *//* private void atualizarIndicadorClienteImovel(String codClienteImovel){ int idClienteimovel = Integer.valueOf(codClienteImovel); getFachada().atualizarIndicadorNomeContaClienteImovel(idClienteimovel); }*/ /** * @author Rafael Pinto * @param sessao * @date 10/09/2010 * @param idClienteImovel */ private boolean alterarDadosCliente(ExibirAtualizarDadosClientesPopupActionForm form,Usuario usuarioLogado, HttpSession sessao){ boolean clienteAtualizado = false; //caso a colecao de ClienteImovel nao esteja vazia if(form.getColecaoClienteImovel() != null && !form.getColecaoClienteImovel().isEmpty()){ //id do cliente imovel a ser altualizado String codClienteImovelAtualizado = form.getCodClienteImovel(); //verifica se foi selecionado algum cliente if(codClienteImovelAtualizado != null && !codClienteImovelAtualizado.equals("")){ Iterator iteratorClienteImovel = form.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("") && form.getNovoNomeCliente()!=null //& !form.getNovoNomeCliente().equals("") && !cliente.getNome().equals(form.getNovoNomeCliente())){ //Teste de altera��o do nome do cliente menos que 5 digitos do nome Integer dif = StringUtils.getLevenshteinDistance(cliente.getNome() ,form.getNovoNomeCliente()); if(dif > 5){ throw new ActionServletException("atencao.alteracao.maxima.caracteres"); }else if(dif != 0){ cliente.setNome(form.getNovoNomeCliente()); isAlterado = true; } } //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)form.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(form.getIdCliente())){ getFachada().remover(clienteFoneRemover); } } form.setRemoverClienteFone(null); isAlterado = true; }*/ //caso n�o tenha informado o cpf/cnpj. if(form.getCpfCnpjCliente() != null && form.getCpfCnpjCliente().equals("")){ throw new ActionServletException("atencao.cpf_nao_informado"); } else { //Pessoa F�sica if(cliente.getClienteTipo().getIndicadorPessoaFisicaJuridica().equals(ConstantesSistema.SIM)){ //se houver alguma mudan�a no cpf if(!form.getCpfCnpjCliente().equals(cliente.getCpf())){ String cpf = form.getCpfCnpjCliente(); //valida o cpf if(Util.validacaoCPF(cpf)){ //verifica se existe o cliente if(!existeClienteCpf(cpf,cliente.getId())){ cliente.setCpf(form.getCpfCnpjCliente()); isAlterado = true; } }else{ throw new ActionServletException("atencao.digito_verificador_cpf_nao_confere"); } } //Pessoa Jur�dica }else if(cliente.getClienteTipo().getIndicadorPessoaFisicaJuridica().equals(ConstantesSistema.NAO)){ //se houver alguma mudan�a no cnpj if(!form.getCpfCnpjCliente().equals(cliente.getCnpj())){ String cnpj = form.getCpfCnpjCliente(); //valida o cnpj if(Util.validacaoCNPJ(cnpj)){ //verifica se existe o cliente if(!existeClienteCnpj(cnpj,cliente.getId())){ cliente.setCnpj(form.getCpfCnpjCliente()); isAlterado = true; } }else{ throw new ActionServletException("atencao.digito_verificador_cnpj_nao_confere"); } } } } if(!Util.isVazioOrNulo(cliente.getClienteFones())){ //Remove todos para inserir logo ap�s nova cole��o de telefones this.getFachada().removerTodosTelefonesPorCliente(cliente.getId()); for (Iterator iterator = cliente.getClienteFones().iterator(); iterator.hasNext();) { IClienteFone clienteFone = (IClienteFone) iterator.next(); getFachada().inserir(clienteFone); } } //Teste de altera��o do telefone padr�o. if(sessao.getAttribute("mudouTelefonePadrao")!=null){ clienteAtualizado = true; } } } //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); clienteAtualizado = true; } } else{ throw new ActionServletException("atencao.cliente_nao_selecionado"); } } return clienteAtualizado; } /* * @author Daniel Alves * @date 01/09/2010 * @param cpf * @return boolean */ private boolean existeClienteCpf(String cpf, Integer idCliente){ boolean existeCliente = false; FiltroCliente filtroCliente = new FiltroCliente(); filtroCliente.adicionarParametro(new ParametroSimples(FiltroCliente.CPF, cpf)); filtroCliente.adicionarParametro(new ParametroSimplesDiferenteDe(FiltroCliente.CPF, idCliente)); 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, Integer idCliente){ boolean existeCliente = false; FiltroCliente filtroCliente = new FiltroCliente(); filtroCliente.adicionarParametro(new ParametroSimples(FiltroCliente.CNPJ, cnpj)); filtroCliente.adicionarParametro(new ParametroSimplesDiferenteDe(FiltroCliente.CNPJ, idCliente)); 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; } }