package br.gov.mc.cadsei.bean; import java.io.IOException; import java.text.Normalizer; import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.PostConstruct; import javax.faces.application.FacesMessage; import javax.faces.bean.ManagedBean; import javax.faces.bean.ManagedProperty; import javax.faces.bean.ViewScoped; import javax.faces.context.ExternalContext; import javax.faces.context.FacesContext; import javax.servlet.http.HttpServletRequest; import javax.sql.rowset.serial.SerialBlob; import net.woodstock.rockframework.util.Calendar; import org.hibernate.Criteria; import org.hibernate.criterion.Restrictions; import org.primefaces.event.FileUploadEvent; import br.gov.arquitetura.bean.BaseBean; import br.gov.arquitetura.excecao.ExcecaoUtil; import br.gov.arquitetura.util.ConstantesARQ; import br.gov.arquitetura.util.FacesMessagesUtil; import br.gov.mc.arquitetura.util.GeradorSenha; import br.gov.mc.arquitetura.util.PessoaFisicaUtil; import br.gov.mc.cadsei.entidade.CadDocumento; import br.gov.mc.cadsei.entidade.CadHistoricoProponente; import br.gov.mc.cadsei.entidade.CadProponente; import br.gov.mc.cadsei.entidade.CadSituacaoCadastroD; import br.gov.mc.cadsei.entidade.CadTipoDocumentoD; import br.gov.mc.cadsei.service.GenericService; import br.gov.mc.cadsei.service.ProponenteService; import br.gov.mc.cadsei.util.CompareCorRaca; import br.gov.mc.cadsei.util.CompareCrpMunicipio; import br.gov.mc.cadsei.util.CompareCrpUf; import br.gov.mc.cadsei.util.CpfCnpjUtil; import br.gov.mc.cadsei.util.CriptoUtil; import br.gov.mc.cadsei.util.EnvioMail; import br.gov.mc.cadsei.util.JSFUtil; import br.gov.mc.corporativo.entidade.CrpContatoEmail; import br.gov.mc.corporativo.entidade.CrpContatoTelefone; import br.gov.mc.corporativo.entidade.CrpCorRaca; import br.gov.mc.corporativo.entidade.CrpDocumentoPessoaFisica; import br.gov.mc.corporativo.entidade.CrpEndereco; import br.gov.mc.corporativo.entidade.CrpMunicipio; import br.gov.mc.corporativo.entidade.CrpPessoaFisica; import br.gov.mc.corporativo.entidade.CrpTipoDocPessoaFisica; import br.gov.mc.corporativo.entidade.CrpTipoEndereco; import br.gov.mc.corporativo.entidade.CrpTipoPessoa; import br.gov.mc.corporativo.entidade.CrpTipoTelefone; import br.gov.mc.corporativo.entidade.CrpUf; @ManagedBean(name = "cadastroProponenteBean") @ViewScoped public class CadastroProponenteBean extends BaseBean { private static final long serialVersionUID = 1L; private static final String ACEITO = "aceito"; private static final String PROPONENTE = "proponente"; private Boolean renderizaUploadDocumentos; private Boolean renderizaUploadDocumentosOab; private Comparator UfSorter = new CompareCrpUf(); private Comparator corRacaSorter = new CompareCorRaca(); @ManagedProperty(value = "#{pessoaFisicaUtil}") private transient PessoaFisicaUtil pessoaFisicaUtil; @ManagedProperty(value = "#{genericService}") private transient GenericService genericService; @ManagedProperty(value = "#{proponenteService}") private transient ProponenteService proponenteService; private String context = getContextPath(); private String ipUsuario; private String DDDtelefone; private String telefone; private String DDDcelular; private String celular; private String emailProponente; private String confirmarEmailProponente; private String cpfProponente; private String rgProponente; private String orgaoEmissor; private CrpContatoEmail email; private CrpEndereco endereco; private CrpUf uf; private List listaUf; private List listaMunicipio; private List listaCorRaca; private String senhaAtual; private String novaSenha; private String confirmarSenha; private CadDocumento registroOab; private CadDocumento documentoIdentidade; private CadDocumento documentoCpf; private CadDocumento documentoEndereco; private boolean declaracaoAceita = false; private boolean hiddenCorp = true; private boolean cpfValidado = false; private boolean logged = false; private boolean rgValido = false; //Gerado para contemplar a geração de histórico. private Map valoresOriginais; private Map valoresSubmetidos; @Override public CadProponente createModel() { this.DDDtelefone = null; this.telefone = null; this.DDDcelular = null; this.celular = null; this.emailProponente = null; this.cpfProponente = null; this.rgProponente = null; this.orgaoEmissor = null; this.confirmarEmailProponente = null; this.hiddenCorp = true; this.cpfValidado = false; this.setEndereco(null); this.setUf(null); CadProponente proponente = new CadProponente(); CrpPessoaFisica crpf = new CrpPessoaFisica(); crpf.setTipoPessoa(new CrpTipoPessoa(CrpTipoPessoa.FISICA)); crpf.setCorRaca(new CrpCorRaca()); proponente.setPessoaProponente(crpf); return proponente; } @PostConstruct public void init() { // Recupera o usuário conectado CadProponente proponente = (CadProponente) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get(PROPONENTE); if(proponente == null){ getModel().setSiglaUF(new CrpUf()); Boolean aceito = (Boolean) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().remove(ACEITO); if(aceito == null || !aceito.booleanValue()){ try{ FacesContext.getCurrentInstance().getExternalContext().redirect("declaracao-cadastro.jsf"); }catch(IOException e){ e.printStackTrace(); } }else{ this.setDeclaracaoAceita(aceito); } }else{ this.setLogged(true); this.setCpfValidado(true); this.setRgValido(true); this.setModel((CadProponente) this.getGenericService().createCriteria(CadProponente.class).add(Restrictions.eq("id", proponente.getId())) .uniqueResult()); if (this.getModel().getPessoaProponente().getCorRaca() == null) { this.getModel().getPessoaProponente().setCorRaca(new CrpCorRaca(1)); } // Recupera os documentos do proponente for (CadDocumento documento : this.getModel().getDocumentos()) { if(CadTipoDocumentoD.RG.equals(documento.getTipoDocumento().getId())){ this.setDocumentoIdentidade(documento); }else if(CadTipoDocumentoD.CPF.equals(documento.getTipoDocumento().getId())){ this.setDocumentoCpf(documento); }else if(CadTipoDocumentoD.RESIDENCIA.equals(documento.getTipoDocumento().getId())){ this.setDocumentoEndereco(documento); }else if(CadTipoDocumentoD.REGISTRO_OAB.equals(documento.getTipoDocumento().getId())){ this.setRegistroOab(documento); } } // Recupera os documentos do proponente for(CrpDocumentoPessoaFisica documento : this.getModel().getPessoaProponente().getDocumentos()){ if(documento.getTipoDocumento().getId().equals(CrpTipoDocPessoaFisica.CPF)) { this.setCpfProponente(documento.getNumero()); this.cpfValidado = true; } else if(documento.getTipoDocumento().getId().equals(CrpTipoDocPessoaFisica.RG)) { this.setRgProponente(documento.getNumero()); this.setOrgaoEmissor(documento.getOrgaoEmissor()); this.rgValido = true; } } // Recupera os telefones do proponente for(CrpContatoTelefone telefone : this.getModel().getPessoaProponente().getTelefones()){ if(telefone.getTipoTelefone().getId().equals(CrpTipoTelefone.CONTATO)) { this.setDDDtelefone(telefone.getNumDdd()); this.setTelefone(telefone.getNumTelefone()); } else if(telefone.getTipoTelefone().getId().equals(CrpTipoTelefone.CELULAR)) { this.setDDDcelular(telefone.getNumDdd()); this.setCelular(telefone.getNumTelefone()); } } // Recupera o e-mail do proponente if(!this.getModel().getPessoaProponente().getEmails().isEmpty()){ for(CrpContatoEmail email : this.getModel().getPessoaProponente().getEmails()){ if(email.getEmailPessoal() != null && email.getEmailPessoal().booleanValue()) { this.setEmail(email); this.setConfirmarEmailProponente(this.getModel().getEmailProponente()); } } }else{ this.setConfirmarEmailProponente(this.getModel().getEmailProponente()); } // Recupera o endereço for(CrpEndereco endereco : this.getModel().getPessoaProponente().getEnderecos()){ if(CrpTipoEndereco.CORRESPONDENCIA.equals(endereco.getTipoEndereco().getId())){ this.setEndereco(endereco); if (endereco.getMunicipio() != null && endereco.getMunicipio().getUf() != null) { this.setUf(endereco.getMunicipio().getUf()); } else { this.setUf(new CrpUf()); endereco.setMunicipio(new CrpMunicipio()); } this.changeUF(); } } } setValoresOriginais(new HashMap()); setValoresSubmetidos(new HashMap()); if(getModel().getId()!=null){ // para gravar o histórico, obtêm-se os valores oridinais e // submete-se em um MAP. String oab = getModel().getNumeroRegistroOab(); valoresOriginais.put(1, getEndereco().getLogradouro()); valoresOriginais.put(2, getModel().getPossuiOab()); if(getModel().getPossuiOab().equals(true)){ valoresOriginais.put(3, oab); } valoresOriginais.put(4,getModel().getRgProponente()); valoresOriginais.put(5, getDDDtelefone()); valoresOriginais.put(6, getTelefone()); valoresOriginais.put(7, getDDDcelular()); valoresOriginais.put(8, getCelular()); valoresOriginais.put(9, getModel().getEmailProponente()); } } public CadProponente getCreateModel() { return createModel(); } @Override public String getQualifiedName() { return "Proponente"; } @Override public boolean isFeminino() { return false; } @Override public String getRequiredMessage() { return super.getRequiredMessage(); } public PessoaFisicaUtil getPessoaFisicaUtil() { return pessoaFisicaUtil; } public void setPessoaFisicaUtil(PessoaFisicaUtil pessoaFisicaUtil) { this.pessoaFisicaUtil = pessoaFisicaUtil; } public String getContext() { return context; } public void setContext(String context) { this.context = context; } @SuppressWarnings("unchecked") public boolean validaCPFproponente() throws Exception { this.hiddenCorp = true; this.cpfValidado = false; this.getModel().getPessoaProponente().setNome(null); if(!(CpfCnpjUtil.ValidateCPF(cpfProponente))){ FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"", "CPF Inválido")); return false; } this.cpfValidado = true; // Recupera CPF e verifica se o mesmo já existe no CADSEI Criteria crit = this.getGenericService().createCriteria(CadProponente.class); crit.add(Restrictions.eq("loginProponente",cpfProponente.replace("-", "").replace("/", "").replace(".", ""))); List proponentes = crit.list(); if(proponentes.size() > 0){ FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "Usuário já cadastrado no sistema.")); return false; } // Recupera CPF e verifica se o mesmo já existe no CORPORATIVO Criteria crit2 = this.getGenericService().createCriteria(CrpPessoaFisica.class); Criteria subCrit = crit2.createCriteria("documentos", "documentos", Criteria.LEFT_JOIN); subCrit.add(Restrictions.eq("numero", cpfProponente.replace("-", "").replace("/", "").replace(".", ""))); List pessoaProponente = crit2.list(); if(pessoaProponente.size() > 0){ // Busca a pessoa novamente com todas suas informações Criteria critPessoa = this.getGenericService().createCriteria(CrpPessoaFisica.class).add(Restrictions.eq("id", pessoaProponente.get(0).getId())); pessoaProponente = critPessoa.list(); for(CrpPessoaFisica p : pessoaProponente){ if (p != null){ this.getModel().setPessoaProponente(p); // Recupera os telefones do proponente for(CrpContatoTelefone telefone : this.getModel().getPessoaProponente().getTelefones()){ if(telefone.getTipoTelefone().getId().equals(CrpTipoTelefone.CONTATO)) { this.DDDtelefone = telefone.getNumDdd(); this.telefone = telefone.getNumTelefone(); } else if(telefone.getTipoTelefone().getId().equals(CrpTipoTelefone.CELULAR)) { this.DDDcelular = telefone.getNumDdd(); this.celular = telefone.getNumTelefone(); } } if(this.getModel().getPessoaProponente().getCorRaca() == null){ this.getModel().getPessoaProponente().setCorRaca(new CrpCorRaca(1)); } // Recupera o e-mail do proponente for(CrpContatoEmail email : this.getModel().getPessoaProponente().getEmails()){ if(email.getEmailPessoal() != null && email.getEmailPessoal().booleanValue()) { this.setEmail(email); this.getModel().setEmailProponente(email.getDescricao()); this.setConfirmarEmailProponente(email.getDescricao()); } } // Recupera os documentos do proponente for(CrpDocumentoPessoaFisica documento : this.getModel().getPessoaProponente().getDocumentos()){ if(documento.getTipoDocumento().getId().equals(CrpTipoDocPessoaFisica.CPF)) { this.setCpfProponente(documento.getNumero()); this.cpfValidado = true; } else if(documento.getTipoDocumento().getId().equals(CrpTipoDocPessoaFisica.RG)) { this.setRgProponente(documento.getNumero()); this.setOrgaoEmissor(documento.getOrgaoEmissor()); this.rgValido = true; } } // Recupera o endereço for(CrpEndereco endereco : this.getModel().getPessoaProponente().getEnderecos()){ if(CrpTipoEndereco.CORRESPONDENCIA.equals(endereco.getTipoEndereco().getId())){ this.setEndereco(endereco); if (endereco.getMunicipio() != null && endereco.getMunicipio().getUf() != null) { this.setUf(endereco.getMunicipio().getUf()); } else { this.setUf(new CrpUf()); endereco.setMunicipio(new CrpMunicipio()); } this.changeUF(); } } this.hiddenCorp = false; } } } return true; } public CadProponente resetModel(){ this.setModel(new CadProponente()); return this.getModel(); } @SuppressWarnings("unchecked") public boolean validaCPFCadastro() { if(!(CpfCnpjUtil.ValidateCPF(cpfProponente))){ FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"", "CPF Inválido")); return false; } // Somente valida o CPF ao salvar, se não estiver logado if(!this.isLogged()){ // Recupera CPF e verifica se o mesmo já existe no CADSEI Criteria crit = this.getGenericService().createCriteria(CadProponente.class); crit.add(Restrictions.eq("loginProponente",cpfProponente.replace("-", "").replace("/", "").replace(".", ""))); List proponentes = crit.list(); if(proponentes.size() > 0){ FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "Usuário já cadastrado no sistema.")); return false; } } return true; } private boolean validarDataNascimento(){ if(this.getModel().getPessoaProponente().getDataNascimento() != null){ Calendar datNascimento = Calendar.getInstance(); datNascimento.setTime(this.getModel().getPessoaProponente().getDataNascimento()); datNascimento.set(Calendar.HOUR_OF_DAY, 0); datNascimento.set(Calendar.MINUTE, 0); datNascimento.set(Calendar.SECOND, 0); datNascimento.set(Calendar.MILLISECOND, 0); Calendar datAtual = Calendar.getInstance(); datAtual.setTime(new Date()); datAtual.set(Calendar.HOUR_OF_DAY, 0); datAtual.set(Calendar.MINUTE, 0); datAtual.set(Calendar.SECOND, 0); datAtual.set(Calendar.MILLISECOND, 0); System.out.println("Idade do proponente: " + datAtual.diffYears(datNascimento)); if(datAtual.diffYears(datNascimento) < 16){ FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "Menores de 16 anos não podem realizar o cadastro!")); return false; } } return true; } private boolean validarEmail(){ if(!this.getConfirmarEmailProponente().isEmpty()){ if(!this.getConfirmarEmailProponente().equals(this.getModel().getEmailProponente())){ FacesContext.getCurrentInstance().addMessage("confirmarEmailProponente", new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "E-mail informado não confere!")); return false; } } return true; } public String voltar(){ if(this.isLogged()){ return this.redirect("principal.jsf"); } return this.redirect("login_externo.jsf"); } private boolean validaForm() { boolean canContinue = true; if(this.getModel().getDocumentos().size() < 2){ FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "Todos os documento da pessoa física devem ser informados!")); canContinue = false; } if(this.isLogged()){ if (!this.getModel().getSenhaProponente().equals(this.senhaAtual) && !this.getModel().getSenhaProponente().equals(CriptoUtil.getCriptografia(this.senhaAtual))) { FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"", "Senha atual não confere!")); canContinue = false; } // Valdida se os dois campos de alterar senha foi informado if(!this.novaSenha.isEmpty() && this.confirmarSenha.isEmpty()){ FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "Campo Confirmar Nova Senha não foi informado!")); canContinue = false; } if(this.novaSenha.isEmpty() && !this.confirmarSenha.isEmpty()){ FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "Campo Nova Senha não foi informado!")); canContinue = false; } // Campos são opcionais, dessa forma só valida se as senhas conferem // se os mesmos estiverem preenchidos. if(!this.novaSenha.isEmpty() && !this.confirmarSenha.isEmpty()) { if(!this.novaSenha.equals(this.confirmarSenha)){ FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"", "Novas senhas não conferem!")); canContinue = false; } } } if(!this.rgValido && !validateRG()){ canContinue = false; } //Verifica se a pessoa possui menos de 16 anos if(this.getModel().getPessoaProponente().getDataNascimento() != null){ Calendar datNascimento = Calendar.getInstance(); datNascimento.setTime(this.getModel().getPessoaProponente().getDataNascimento()); datNascimento.set(Calendar.HOUR_OF_DAY, 0); datNascimento.set(Calendar.MINUTE, 0); datNascimento.set(Calendar.SECOND, 0); datNascimento.set(Calendar.MILLISECOND, 0); Calendar datAtual = Calendar.getInstance(); datAtual.setTime(new Date()); datAtual.set(Calendar.HOUR_OF_DAY, 0); datAtual.set(Calendar.MINUTE, 0); datAtual.set(Calendar.SECOND, 0); datAtual.set(Calendar.MILLISECOND, 0); datAtual.addYears(-16); if(datAtual.before(datNascimento)){ FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "Menores de 16 anos não podem realizar o cadastro!")); canContinue = false; } } if (this.getModel().getPossuiOab() != null && this.getModel().getPossuiOab().booleanValue() && (this.getModel().getNumeroRegistroOab() == null || this.getRegistroOab().getNomDocumento() == null)){ FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "Número ou documento de registro da OAB não foram informados!")); canContinue = false; } return canContinue; } @SuppressWarnings("unchecked") public boolean validateRG(){ // Se o campo estiver preenchido, valida-o if(rgProponente != null && !rgProponente.isEmpty()) { List doctos = this.getGenericService().createCriteria(CrpDocumentoPessoaFisica.class) .add(Restrictions.eq("numero", rgProponente)).list(); if(doctos.size() > 0) { this.rgValido = false; FacesContext.getCurrentInstance().addMessage("rgProponente", new FacesMessage(FacesMessage.SEVERITY_ERROR,"", "RG já cadastrado!")); return false; } } this.rgValido = true; return true; } @Override public String save() { // Valida o endereço de e-mail informado if(!validarEmail()) { return ERROR; } if(!validaForm()){ return ERROR; } // Faz a validação do CPF do proponente if(validaCPFCadastro()){ // Carrega o CPF no proponente CrpDocumentoPessoaFisica documentoCPF = new CrpDocumentoPessoaFisica(); documentoCPF.setNumero(cpfProponente.replace("-", "").replace("/", "").replace(".", "")); documentoCPF.setTipoDocumento(new CrpTipoDocPessoaFisica(CrpTipoDocPessoaFisica.CPF)); documentoCPF.setOrgaoEmissor(""); // Indica se é uma nova pessoa que esta sendo cadastrada Boolean isNovoCorp = true; if(this.getModel().getPessoaProponente().getId() != null) { isNovoCorp = false; } this.getModel().setCPFProponente(documentoCPF); // Caso não encontre a Pessoa no CORPORATIVO if(isNovoCorp){ if(!validarDataNascimento()) { return ERROR; } // Carrega o RG no proponente CrpDocumentoPessoaFisica documentoRG = new CrpDocumentoPessoaFisica(); documentoRG.setNumero(rgProponente); documentoRG.setOrgaoEmissor(orgaoEmissor); documentoRG.setTipoDocumento(new CrpTipoDocPessoaFisica(CrpTipoDocPessoaFisica.RG)); this.getModel().setRgProponente(documentoRG); //Valores padrões para cadastro da pessoa. this.getModel().getPessoaProponente().setDataAlteracao(new Date()); this.getModel().getPessoaProponente().setTipoPessoa(new CrpTipoPessoa(CrpTipoPessoa.FISICA)); // Define a operação a ser realizada: I - Inserção, A - // Alteração this.getModel().getPessoaProponente().setTipoOperacao("I"); // Carrega o Telefone do Proponente if (!this.telefone.equals("") || !this.DDDtelefone.equals("")) { this.getModel().setTelefoneContato(Integer.parseInt(this.DDDtelefone.replace(" ", "").replace(")", "").replace("(", "").trim()), Integer.parseInt(this.telefone.replace("-", "").trim())); } // Carrega o Cel do Proponente if(!(celular.equals("") || DDDcelular.equals(""))){ this.getModel().setCelularContato(Integer.parseInt(this.DDDcelular.replace(" ", "").replace(")", "").replace("(", "").trim()), Integer.parseInt(this.celular.replace("-", "").trim())); } try{ // Salva as informações da pessoa na base do CORPORATIVO this.getModel().getPessoaProponente().setCorRaca(new CrpCorRaca(1)); this.getGenericService().save(this.getModel().getPessoaProponente()); // Salva os documentos da pessoa física: CPF e RG for (CrpDocumentoPessoaFisica curDocumento : this.getModel().getPessoaProponente().getDocumentos()) { curDocumento.setPessoaFisica(new CrpPessoaFisica(this.getModel().getPessoaProponente().getId())); try{ if(curDocumento.getId() == null) { this.getGenericService().save(curDocumento); } }catch (Exception e) { System.out.println("Documento já existente!"); } } // Salva os telefones de contato do proponente if (this.getModel().getPessoaProponente().getTelefones() != null) { for (CrpContatoTelefone curTelefone : this.getModel().getPessoaProponente().getTelefones()) { curTelefone.setPessoa(new CrpPessoaFisica(this.getModel().getPessoaProponente().getId())); if(curTelefone.getId() == null) { this.getGenericService().save(curTelefone); } } } // Atualiza o e-mail pessoal this.getEmail().setDescricao(this.getModel().getEmailProponente()); this.getEmail().setPessoa(new CrpPessoaFisica(this.getModel().getPessoaProponente().getId())); this.getGenericService().save(this.getEmail()); // Atualiza os dados do endereço if (this.getEndereco().getCep() != null) { this.getEndereco().setCep(this.getEndereco().getCep().replace(".", "").replace("-", "")); } this.getEndereco().setPessoa(new CrpPessoaFisica(this.getModel().getPessoaProponente().getId())); if (this.getEndereco().getMunicipio().getId() == null) { this.getEndereco().setMunicipio(null); } this.getGenericService().save(this.getEndereco()); }catch (Exception e) { FacesMessagesUtil.addErrorMessage(this.getQualifiedName(), ConstantesARQ.ERRO_SALVAR); ExcecaoUtil.tratarExcecao(e); return ERROR; } } else { try{ this.getModel().getPessoaProponente().setDataAlteracao(new Date()); this.getModel().getPessoaProponente().setTipoOperacao("A"); if(this.getModel().getPessoaProponente().getCorRaca() != null && this.getModel().getPessoaProponente().getCorRaca().getId() != null){ this.getModel().getPessoaProponente().setCorRaca(new CrpCorRaca(this.getModel().getPessoaProponente().getCorRaca().getId())); } this.getGenericService().save(this.getModel().getPessoaProponente()); // Altera o RG do proponente boolean rgJaExiste = false; for(CrpDocumentoPessoaFisica documento : this.getModel().getPessoaProponente().getDocumentos()){ if(documento.getPessoaFisica() != null) { if(documento.getTipoDocumento().getId().equals(CrpTipoDocPessoaFisica.RG)) { documento.setNumero(this.rgProponente); documento.setOrgaoEmissor(this.orgaoEmissor); this.getGenericService().save(documento); rgJaExiste = true; } } } // Quando o usuário informar o RG, o mesmo será cadastrado // na base // corporativa, quando e somente quando não existir. if(!rgJaExiste){ CrpDocumentoPessoaFisica rg = new CrpDocumentoPessoaFisica(); rg.setTipoDocumento(new CrpTipoDocPessoaFisica(CrpTipoDocPessoaFisica.RG)); rg.setNumero(this.rgProponente); rg.setOrgaoEmissor(this.orgaoEmissor); rg.setPessoaFisica(this.getModel().getPessoaProponente()); this.getGenericService().save(rg); } // Carrega o Telefone do Proponente if (!this.DDDtelefone.equals("") && !this.telefone.equals("")) { this.getModel().setTelefoneContato(Integer.parseInt(this.DDDtelefone.replace(" ", "").replace(")", "").replace("(", "").trim()), Integer.parseInt(this.telefone.replace("-", "").trim())); } // Carrega o Cel do Proponente if (!this.DDDcelular.equals("") && !this.celular.equals("")) { this.getModel().setCelularContato(Integer.parseInt(this.DDDcelular.replace(" ", "").replace(")", "").replace("(", "").trim()), Integer.parseInt(this.celular.replace("-", "").trim())); } // Salva os telefones de contato do proponente if (this.getModel().getPessoaProponente().getTelefones() != null) { for (CrpContatoTelefone curTelefone : this.getModel().getPessoaProponente().getTelefones()) { if(curTelefone.getId() == null) { this.getGenericService().save(curTelefone); } } } // Atualiza o e-mail pessoal this.getEmail().setDescricao(this.getModel().getEmailProponente()); this.getEndereco().setPessoa(new CrpPessoaFisica(this.getModel().getPessoaProponente().getId())); this.getGenericService().save(this.getEmail()); // Atualiza os dados do endereço if (this.getEndereco().getCep() != null && !this.getEndereco().getCep().equals("")) { this.getEndereco().setCep(this.getEndereco().getCep().replace(".", "").replace("-", "")); } this.getEndereco().setPessoa(new CrpPessoaFisica(this.getModel().getPessoaProponente().getId())); if (this.getEndereco().getMunicipio().getId() != null) { this.getEndereco().setMunicipio(new CrpMunicipio(this.getEndereco().getMunicipio().getId())); } else { this.getEndereco().setMunicipio(null); } this.getGenericService().save(this.getEndereco()); }catch (Exception e) { FacesMessagesUtil.addErrorMessage(this.getQualifiedName(), ConstantesARQ.ERRO_SALVAR); ExcecaoUtil.tratarExcecao(e); return ERROR; } } this.buscaIp(); this.getModel().setIpProponete(this.ipUsuario); String descEmail = "o seu cadastro foi realizado com sucesso!"; if(this.isLogged()){ // Define a nova senha do usuário if(!this.novaSenha.isEmpty()) { this.getModel().setSenha(this.novaSenha); this.getModel().setSenhaProponente(CriptoUtil.getCriptografia(this.novaSenha)); } descEmail = "o seu perfil foi alterado com sucesso!"; } else { // Cria o login e senha do usuário CreateUsuario(); // Define a data de cadastro do proponente this.getModel().setDataCadastro(new Date()); } if(getUf().getId()!=null){ getModel().setSiglaUF(getUf()); } else { this.getModel().setSiglaUF(null); } try { //No primeiro momento, receberá status de Aguardando análise if(getModel().getId() == null){ this.getModel().setSituacaoCadastro(new CadSituacaoCadastroD(CadSituacaoCadastroD.AGUARDANDO_ANALISE)); } // caso o status seja igual a aprovado, e for uma edição e os // campos de histórico sofrerem modificações, logo o status // passará a ser NECESSITA_RATFIICAÇÃO". // para gravar o histórico, obtêm-se os valores submetidos e // adiciona-os em um MAP. valoresSubmetidos= new HashMap(); valoresSubmetidos.put(1, getEndereco().getLogradouro()); valoresSubmetidos.put(2, getModel().getPossuiOab()); if(getModel().getPossuiOab().equals(true)){ valoresSubmetidos.put(3, getModel().getNumeroRegistroOab()); } valoresSubmetidos.put(4,getModel().getRgProponente()); valoresSubmetidos.put(5, getDDDtelefone()); valoresSubmetidos.put(6, getTelefone().replace("-", "")); valoresSubmetidos.put(7, getDDDcelular()); valoresSubmetidos.put(8, getCelular().replace("-", "")); valoresSubmetidos.put(9, getModel().getEmailProponente()); if(this.getModel().getId()!=null && this.getModel().getSituacaoCadastro().getId().equals(CadSituacaoCadastroD.APROVADO)){ if(!valoresOriginais.equals(valoresSubmetidos)) this.getModel().setSituacaoCadastro(new CadSituacaoCadastroD(CadSituacaoCadastroD.NECESSITA_RATIFICACAO)); } if(this.getModel().getId()!=null && this.getModel().getSituacaoCadastro().getId().equals(CadSituacaoCadastroD.REPROVADO)){ this.getModel().setSituacaoCadastro(new CadSituacaoCadastroD(CadSituacaoCadastroD.AGUARDANDO_ANALISE)); } this.getModel().setDescricaoAnaliseTecnica(null); this.getModel().setAnalista(null); this.getGenericService().save(this.getModel()); if(!isLogged()){ EnvioMail.sendEmail(this.getModel(), descEmail); } if(getModel().getId()!=null){ if(!valoresOriginais.isEmpty()) salvarHistorico(valoresOriginais, valoresSubmetidos); } } catch (Exception e) { e.printStackTrace(); FacesMessagesUtil.addErrorMessage(this.getQualifiedName(), ConstantesARQ.ERRO_SALVAR); ExcecaoUtil.tratarExcecao(e); return ERROR; } if(this.isLogged()){ //Limpa os campos de senha this.novaSenha = null; this.confirmarSenha = null; this.senhaAtual = null; } }else{ return SUCCESS; } if(this.isLogged()){ // Atualiza o proponente na sessão para estar disponível em todo o // sistema FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(PROPONENTE, this.getModel()); FacesMessagesUtil.addInfoMessage("Perfil atualizado com sucesso!"); return SUCCESS; }else{ this.setModel(this.createModel()); // Diretiva para apresentar a mensagem na tela principal do CADSEI FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("message", "Cadastro realizado com sucesso! Verifique seu e-mail!"); return this.redirect("login_externo.jsf"); } } private void salvarHistorico(Map valoresOriginais, Map valoresSubmetidos) { if(!valoresOriginais.equals(valoresSubmetidos)){ String camposAlterados = ""; CadHistoricoProponente h = new CadHistoricoProponente(); if(!isEnderecoIgual (valoresOriginais,valoresSubmetidos)) camposAlterados =" Endereco "; if(!isPossuiOabIgual (valoresOriginais,valoresSubmetidos)) camposAlterados = camposAlterados.equals("") ? camposAlterados = " PossuiOAB " : camposAlterados.concat(", PossuiOAB "); if(getModel().getPossuiOab().equals(true)){ if(!isPossuiRegistroOabIgual (valoresOriginais,valoresSubmetidos)) camposAlterados = camposAlterados.equals("") ? camposAlterados = " RegistroOAB " : camposAlterados.concat(", RegistroOAB "); } if(!isRgIgual (valoresOriginais,valoresSubmetidos)) camposAlterados = camposAlterados.equals("") ? camposAlterados = " RG " : camposAlterados.concat(", RG "); if(!isDDDTelefoneIgual (valoresOriginais,valoresSubmetidos)) camposAlterados = camposAlterados.equals("") ? camposAlterados = " DDDTelefone " : camposAlterados.concat(", DDDTelefone "); if(!isTelefoneIgual (valoresOriginais,valoresSubmetidos)) camposAlterados = camposAlterados.equals("") ? camposAlterados = " Telefone " : camposAlterados.concat(", Telefone "); if(!isDDDCelularIgual (valoresOriginais,valoresSubmetidos)) camposAlterados = camposAlterados.equals("") ? camposAlterados = " DDDCelular " : camposAlterados.concat(", DDDCelular "); if(!isCelularIgual (valoresOriginais,valoresSubmetidos)) camposAlterados = camposAlterados.equals("") ? camposAlterados = " Celular " : camposAlterados.concat(", Celular "); if(!isEmailIgual (valoresOriginais,valoresSubmetidos)) camposAlterados = camposAlterados.equals("") ? camposAlterados = " Email " : camposAlterados.concat(", Email"); h.setProponente(getModel()); //campo alterado h.setCampoAlterado(camposAlterados); //histórico de análise h.setSituacaoCadastro(getModel().getSituacaoCadastro()); //analista responsável pelo proponente h.setAnalista(null); h.setDtAlteracao(new Date()); try { this.getGenericService().save(h); // a partir do momento em que a tela for salva, os valores // originais passarão a ser os admitidos pelo bano, ou seja, os // novos valores. setValoresOriginais(valoresSubmetidos); } catch (Exception e) { FacesMessagesUtil.addErrorMessage(this.getQualifiedName(), ConstantesARQ.ERRO_SALVAR); ExcecaoUtil.tratarExcecao(e); } } } // caso o Endereço submetido igual ao obtido ao carregar a tela, será // passível de armazenamento na tabela histórico. private Boolean isEnderecoIgual(Map valoresOriginais, Map valoresSubmetidos) { return valoresOriginais.get(1).equals(valoresSubmetidos.get(1)); } // caso o OAB submetido igual ao obtido ao carregar a tela, será passível de // armazenamento na tabela histórico. private Boolean isPossuiOabIgual(Map valoresOriginais, Map valoresSubmetidos) { Boolean igual = true; if (valoresOriginais.get(2) == null && valoresSubmetidos.get(2) !=null) igual = false ; if(valoresOriginais!=null && !valoresOriginais.get(2).equals(valoresSubmetidos.get(2))){ igual = false; } return igual; } // caso o OAB submetido igual ao obtido ao carregar a tela, será passível de // armazenamento na tabela histórico. private Boolean isPossuiRegistroOabIgual(Map valoresOriginais, Map valoresSubmetidos) { Boolean igual = true ; if (valoresOriginais.get(3) == null && valoresSubmetidos.get(3) !=null) igual = false ; if(valoresOriginais.get(3)!=null && !valoresOriginais.get(3).equals(valoresSubmetidos.get(3))){ igual = false; } return igual; } // caso o RG submetido igual ao obtido ao carregar a tela, será passível de // armazenamento na tabela histórico. private Boolean isRgIgual(Map valoresOriginais, Map valoresSubmetidos2) { return valoresOriginais.get(4).equals(valoresSubmetidos.get(4)); } // caso o dddTelefone submetido igual ao obtido ao carregar a tela, será // passível de armazenamento na tabela histórico. private Boolean isDDDTelefoneIgual(Map valoresOriginais, Map valoresSubmetidos2) { return valoresOriginais.get(5).equals(valoresSubmetidos.get(5)); } // caso o Telefone submetido igual ao obtido ao carregar a tela, será // passível de armazenamento na tabela histórico. private Boolean isTelefoneIgual(Map valoresOriginais, Map valoresSubmetidos2) { return valoresOriginais.get(6).equals(valoresSubmetidos.get(6)); } // caso o dddCelular submetido igual ao obtido ao carregar a tela, será // passível de armazenamento na tabela histórico. private Boolean isDDDCelularIgual(Map valoresOriginais, Map valoresSubmetidos2) { if(valoresOriginais.get(7)!=null && valoresSubmetidos.get(7)!=null){ return valoresOriginais.get(7).equals(valoresSubmetidos.get(7)); } return true; } // caso o Celular submetido igual ao obtido ao carregar a tela, será // passível de armazenamento na tabela histórico. private Boolean isCelularIgual(Map valoresOriginais, Map valoresSubmetidos2) { if(valoresOriginais.get(8)!=null && valoresSubmetidos.get(8)!=null){ return valoresOriginais.get(8).equals(valoresSubmetidos.get(8)); } return true; } // caso o Email submetido igual ao obtido ao carregar a tela, será passível // de armazenamento na tabela histórico. private Boolean isEmailIgual(Map valoresOriginais, Map valoresSubmetidos2) { return valoresOriginais.get(9).equals(valoresSubmetidos.get(9)); } public void buscaIp(){ if(this.ipUsuario == null || this.ipUsuario.isEmpty()){ ExternalContext curContext = FacesContext.getCurrentInstance().getExternalContext(); HttpServletRequest request = (HttpServletRequest)curContext.getRequest(); this.ipUsuario = request.getRemoteAddr(); } } /** * Retira acentos do texto informado * * @param Texto a ser ajustado * @return Texto ajustado */ private String normalize(String input){ return Normalizer.normalize(input, Normalizer.Form.NFD).replaceAll("[^\\p{ASCII}]", "").trim(); } private void CreateUsuario(){ String loginUsuario = this.getModel().getCPFProponente().toString(); while(loginUsuario.length() < 11){ loginUsuario = "0" + loginUsuario; } this.getModel().setLoginProponente(loginUsuario); String senhaUsuario = GeradorSenha.gerarSenha(); System.out.println("Senha: " + senhaUsuario); this.getModel().setSenha(senhaUsuario); this.getModel().setSenhaProponente(CriptoUtil.getCriptografia(senhaUsuario)); } public void changePossuiOab(){ // Se for marcado como não possui OAB, limpa os campos if (this.getModel().getPossuiOab() != null && !this.getModel().getPossuiOab().booleanValue()) { this.getModel().getDocumentos().remove(this.getRegistroOab()); this.setRegistroOab(null); this.getModel().setNumeroRegistroOab(null); } } public void uploadRegistroOab(FileUploadEvent event) { try { if(event.getFile().getFileName().contains(".png") || event.getFile().getFileName().contains(".pdf") ||event.getFile().getFileName().contains(".jpeg") ||event.getFile().getFileName().contains(".jpg")){ this.getRegistroOab().setDocumento(new SerialBlob(event.getFile().getContents())); this.getRegistroOab().setNomDocumento(event.getFile().getFileName()); if (this.getRegistroOab().getId() == null && !this.getModel().getDocumentos().contains(this.getRegistroOab())) { this.getModel().addDocumento(this.getRegistroOab()); } } } catch (Exception e) { ExcecaoUtil.tratarExcecao(e); } } public void uploadIdentidade(FileUploadEvent event) { try { if(event.getFile().getFileName().contains(".png") || event.getFile().getFileName().contains(".pdf") ||event.getFile().getFileName().contains(".jpeg") ||event.getFile().getFileName().contains(".jpg")){ this.getDocumentoIdentidade().setDocumento(new SerialBlob(event.getFile().getContents())); this.getDocumentoIdentidade().setNomDocumento(event.getFile().getFileName()); if (this.getDocumentoIdentidade().getId() == null && !this.getModel().getDocumentos().contains(this.getDocumentoIdentidade())) { this.getModel().addDocumento(this.getDocumentoIdentidade()); } }else { FacesContext.getCurrentInstance().addMessage("docIdentidade", new FacesMessage(FacesMessage.SEVERITY_ERROR, null, "Tipo de arquivo não autorizado")); return; } } catch (Exception e) { ExcecaoUtil.tratarExcecao(e); } } public void uploadCpf(FileUploadEvent event) { try { this.getDocumentoCpf().setDocumento(new SerialBlob(event.getFile().getContents())); this.getDocumentoCpf().setNomDocumento(event.getFile().getFileName()); if (this.getDocumentoCpf().getId() == null && !this.getModel().getDocumentos().contains(this.getDocumentoCpf())) { this.getModel().addDocumento(this.getDocumentoCpf()); } } catch (Exception e) { ExcecaoUtil.tratarExcecao(e); } } public void uploadEndereco(FileUploadEvent event) { try { if(event.getFile().getFileName().contains(".png") || event.getFile().getFileName().contains(".pdf") ||event.getFile().getFileName().contains(".jpeg") ||event.getFile().getFileName().contains(".jpg")){ this.getDocumentoEndereco().setDocumento(new SerialBlob(event.getFile().getContents())); this.getDocumentoEndereco().setNomDocumento(event.getFile().getFileName()); if (this.getDocumentoEndereco().getId() == null && !this.getModel().getDocumentos().contains(this.getDocumentoEndereco())) { this.getModel().addDocumento(this.getDocumentoEndereco()); } }else { FacesContext.getCurrentInstance().addMessage("docEndereco", new FacesMessage(FacesMessage.SEVERITY_ERROR, null, "Tipo de arquivo não autorizado")); return; } } catch (Exception e) { ExcecaoUtil.tratarExcecao(e); } } @SuppressWarnings("unchecked") public void changeUF(){ if(this.getUf() != null) { this.setListaMunicipio(this.getGenericService().createCriteria(CrpMunicipio.class).add(Restrictions.eq("uf.id", this.getUf().getId())).list()); Collections.sort(this.listaMunicipio, new CompareCrpMunicipio()); } } public Boolean getRenderizaUploadDocumentos(){ Boolean exibe = true; if(getModel().getId()!=null && getModel().getSituacaoCadastro().getId() == 3){ exibe = false; } if(getModel().getId() == null){ exibe = true; } return exibe; } public Boolean getRenderizaUploadDocumentosOab(){ Boolean exibe = false; if(getModel().getId()!=null && getModel().getSituacaoCadastro().getId() == 3){ exibe = false; } if(getModel().getId()!=null && getModel().getSituacaoCadastro().getId()!= 3 && getModel().getPossuiOab().equals(true)){ exibe = true; } if(getModel().getId() == null && getModel().getPossuiOab()!=null && getModel().getPossuiOab().equals(true)){ exibe = true; } return exibe; } @SuppressWarnings("unchecked") public List getListaUf() { if(listaUf == null){ this.listaUf = this.getUniversalManager().getAll(CrpUf.class); Collections.sort(listaUf,UfSorter); } return listaUf; } public void setListaUf(List listaUf) { this.listaUf = listaUf; } public List getListaCorRaca() { if (listaCorRaca == null) { setListaCorRaca(proponenteService.buscaListaCorRaca()); } return listaCorRaca; } public void setListaCorRaca(List listaCorRaca) { this.listaCorRaca = listaCorRaca; } public String getiPUsuario() { return ipUsuario; } public void setiPUsuario(String ipUsuario) { this.ipUsuario = ipUsuario; } public String getCpfProponente() { return cpfProponente; } public void setCpfProponente(String cpfProponente) { this.cpfProponente = cpfProponente; } public String getOrgaoEmissor() { return orgaoEmissor; } public void setOrgaoEmissor(String orgaoEmissor) { this.orgaoEmissor = orgaoEmissor; } public String getRgProponente() { return rgProponente; } public void setRgProponente(String rgProponente) { this.rgProponente = rgProponente; } public String getDDDtelefone() { return DDDtelefone; } public void setDDDtelefone(String dDDtelefone) { DDDtelefone = dDDtelefone; } public String getTelefone() { return telefone; } public void setTelefone(String telefone) { this.telefone = telefone; } public String getCelular() { return celular; } public void setCelular(String celular) { this.celular = celular; } public String getDDDcelular() { return DDDcelular; } public void setDDDcelular(String dDDcelular) { DDDcelular = dDDcelular; } public String getEmailProponente() { return emailProponente; } public void setEmailProponente(String emailProponente) { this.emailProponente = emailProponente; } public String getConfirmarEmailProponente() { return confirmarEmailProponente; } public void setConfirmarEmailProponente(String confirmarEmailProponente) { this.confirmarEmailProponente = confirmarEmailProponente; } public boolean isHiddenCorp() { return hiddenCorp; } public void setHiddenCorp(boolean hiddenCorp) { this.hiddenCorp = hiddenCorp; } public boolean isCpfValidado() { return cpfValidado; } public void setCpfValidado(boolean cpfValidado) { this.cpfValidado = cpfValidado; } public boolean isDeclaracaoAceita() { return declaracaoAceita; } public void setDeclaracaoAceita(boolean declaracaoAceita) { this.declaracaoAceita = declaracaoAceita; } public CrpEndereco getEndereco() { if(this.endereco == null){ this.endereco = new CrpEndereco(); this.endereco.setTipoEndereco(new CrpTipoEndereco(CrpTipoEndereco.CORRESPONDENCIA)); this.endereco.setCorrespondencia(Boolean.TRUE); this.endereco.setMunicipio(new CrpMunicipio()); } return this.endereco; } public void setEndereco(CrpEndereco endereco) { this.endereco = endereco; } public List getListaMunicipio() { return listaMunicipio; } public void setListaMunicipio(List listaMunicipio) { this.listaMunicipio = listaMunicipio; } public CrpUf getUf() { if(this.uf == null){ this.uf = new CrpUf(); } return this.uf; } public void setUf(CrpUf uf) { this.uf = uf; } public CadDocumento getDocumentoIdentidade() { if(this.documentoIdentidade == null){ this.documentoIdentidade = new CadDocumento(); this.documentoIdentidade.setTipoDocumento(new CadTipoDocumentoD(CadTipoDocumentoD.RG)); } return this.documentoIdentidade; } public void setDocumentoIdentidade(CadDocumento documentoIdentidade) { this.documentoIdentidade = documentoIdentidade; } public CadDocumento getDocumentoCpf() { if(this.documentoCpf == null){ this.documentoCpf = new CadDocumento(); this.documentoCpf.setTipoDocumento(new CadTipoDocumentoD(CadTipoDocumentoD.CPF)); } return documentoCpf; } public void setDocumentoCpf(CadDocumento documentoCpf) { this.documentoCpf = documentoCpf; } public CadDocumento getDocumentoEndereco() { if(this.documentoEndereco == null){ this.documentoEndereco = new CadDocumento(); this.documentoEndereco.setTipoDocumento(new CadTipoDocumentoD(CadTipoDocumentoD.RESIDENCIA)); } return documentoEndereco; } public void setDocumentoEndereco(CadDocumento documentoEndereco) { this.documentoEndereco = documentoEndereco; } public CrpContatoEmail getEmail() { if(this.email == null){ this.email = new CrpContatoEmail(); this.email.setEmailPessoal(Boolean.TRUE); } return this.email; } public void setEmail(CrpContatoEmail email) { this.email = email; } public String getSenhaAtual() { return senhaAtual; } public void setSenhaAtual(String senhaAtual) { this.senhaAtual = senhaAtual; } public String getNovaSenha() { return novaSenha; } public void setNovaSenha(String novaSenha) { this.novaSenha = novaSenha; } public String getConfirmarSenha() { return confirmarSenha; } public void setConfirmarSenha(String confirmarSenha) { this.confirmarSenha = confirmarSenha; } public boolean isLogged() { return logged; } public void setLogged(boolean logged) { this.logged = logged; } public boolean isRgValido() { return rgValido; } public void setRgValido(boolean rgValido) { this.rgValido = rgValido; } public String getTituloTela(){ return this.isLogged() ? "Editar perfil do usuário" : "Cadastro de novo usuário"; } public String getTituloBotaoSalvar(){ return this.isLogged() ? "Salvar" : "Cadastrar"; } public GenericService getGenericService() { return genericService; } public void setGenericService(GenericService genericService) { this.genericService = genericService; } public CadDocumento getRegistroOab() { if(this.registroOab == null){ this.registroOab = new CadDocumento(); this.registroOab.setTipoDocumento(new CadTipoDocumentoD(CadTipoDocumentoD.REGISTRO_OAB)); } return registroOab; } public void setRegistroOab(CadDocumento registroOab) { this.registroOab = registroOab; } public Map getValoresOriginais() { return valoresOriginais; } public void setValoresOriginais(Map valoresOriginais) { this.valoresOriginais = valoresOriginais; } public Map getValoresSubmetidos() { return valoresSubmetidos; } public void setValoresSubmetidos(Map valoresSubmetidos) { this.valoresSubmetidos = valoresSubmetidos; } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((endereco == null) ? 0 : endereco.hashCode()); result = prime * result + ((registroOab == null) ? 0 : registroOab.hashCode()); result = prime * result + ((rgProponente == null) ? 0 : rgProponente.hashCode()); result = prime * result + ((valoresOriginais == null) ? 0 : valoresOriginais.hashCode()); result = prime * result + ((valoresSubmetidos == null) ? 0 : valoresSubmetidos.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; CadastroProponenteBean other = (CadastroProponenteBean) obj; if (endereco == null) { if (other.endereco != null) return false; } else if (!endereco.equals(other.endereco)) return false; if (registroOab == null) { if (other.registroOab != null) return false; } else if (!registroOab.equals(other.registroOab)) return false; if (rgProponente == null) { if (other.rgProponente != null) return false; } else if (!rgProponente.equals(other.rgProponente)) return false; if (valoresOriginais == null) { if (other.valoresOriginais != null) return false; } else if (!valoresOriginais.equals(other.valoresOriginais)) return false; if (valoresSubmetidos == null) { if (other.valoresSubmetidos != null) return false; } else if (!valoresSubmetidos.equals(other.valoresSubmetidos)) return false; return true; } public void setRenderizaUploadDocumentos(Boolean renderizaUploadDocumentos) { this.renderizaUploadDocumentos = renderizaUploadDocumentos; } public ProponenteService getProponenteService() { return proponenteService; } public void setProponenteService(ProponenteService proponenteService) { this.proponenteService = proponenteService; } public void setRenderizaUploadDocumentosOab(Boolean renderizaUploadDocumentosOab) { this.renderizaUploadDocumentosOab = renderizaUploadDocumentosOab; } }