public bool Salvar(Pessoa pessoa, BancoDeDados banco = null, bool isConjuge = false) { try { pessoa.Ativa = 1; pessoa.CredenciadoId = User.FuncionarioId; #region Configurar Copiar dados #region Fisica if (pessoa.IsFisica) { if (pessoa.IsCopiado && pessoa.Fisica.ConjugeId.GetValueOrDefault() <= 0) { pessoa.Fisica.Conjuge = _busInterno.Obter(pessoa.Fisica.ConjugeInternoId.GetValueOrDefault()); pessoa.Fisica.Conjuge.InternoId = pessoa.Fisica.ConjugeId; pessoa.Fisica.Conjuge.Id = Obter(pessoa.Fisica.ConjugeCPF, simplificado: true, credenciadoId: User.FuncionarioId).Id; pessoa.Fisica.ConjugeId = pessoa.Fisica.Conjuge.Id; pessoa.Fisica.Conjuge.Fisica.ConjugeId = 0; pessoa.Fisica.Conjuge.IsCopiado = true; } } #endregion #region Juridica if (pessoa.IsJuridica) { Pessoa representante = null; for (int i = 0; i < pessoa.Juridica.Representantes.Count; i++) { representante = pessoa.Juridica.Representantes[i]; if (representante.IsCopiado) { /*Pessoa*/ representante = _busInterno.Obter(representante.InternoId.GetValueOrDefault()); representante.InternoId = representante.Id; representante.Id = Obter(representante.CPFCNPJ, simplificado: true, credenciadoId: User.FuncionarioId).Id; representante.CredenciadoId = User.FuncionarioId; representante.IsCopiado = true; if (representante.Fisica.EstadoCivil.GetValueOrDefault() == (int)ePessoaEstadoCivil.Casado || representante.Fisica.EstadoCivil.GetValueOrDefault() == (int)ePessoaEstadoCivil.Amasiado) { /*Conjuge*/ Pessoa conjuge = Obter(representante.Fisica.ConjugeCPF, credenciadoId: User.FuncionarioId); if (conjuge.Id > 0) { representante.Fisica.Conjuge = conjuge; representante.Fisica.ConjugeCPF = representante.Fisica.Conjuge.CPFCNPJ; representante.Fisica.ConjugeId = representante.Fisica.Conjuge.Id; pessoa.Juridica.Representantes[i] = representante; continue; } representante.Fisica.Conjuge = _busInterno.Obter(representante.Fisica.ConjugeId.GetValueOrDefault()); representante.Fisica.Conjuge.InternoId = representante.Fisica.ConjugeId; representante.Fisica.Conjuge.Id = conjuge.Id; representante.Fisica.ConjugeId = representante.Fisica.Conjuge.Id; representante.Fisica.Conjuge.Fisica.ConjugeId = 0; representante.Fisica.Conjuge.IsCopiado = true; } pessoa.Juridica.Representantes[i] = representante; } } } #endregion #endregion _validar.Salvar(pessoa); if (Validacao.EhValido) { GerenciadorTransacao.GerarNovoID(); using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia(banco, UsuarioCredenciado)) { _validar.BancoValidar = bancoDeDados; bancoDeDados.IniciarTransacao(); Pessoa aux; if (pessoa.IsJuridica) { #region Juridica foreach (Pessoa representante in pessoa.Juridica.Representantes) { if (representante.IsCopiado) { representante.CredenciadoId = User.FuncionarioId; if (representante.Fisica.Conjuge != null && representante.Fisica.Conjuge.IsCopiado) { if (!_validar.Salvar(representante.Fisica.Conjuge, true)) { bancoDeDados.Rollback(); return(false); } representante.Fisica.Conjuge.CredenciadoId = User.FuncionarioId; _da.Salvar(representante.Fisica.Conjuge, bancoDeDados); representante.Fisica.ConjugeId = representante.Fisica.Conjuge.Id; } if (!_validar.Salvar(representante)) { bancoDeDados.Rollback(); return(false); } _da.Salvar(representante, bancoDeDados); representante.Id = representante.Id; continue; } if (representante.Id <= 0) { aux = _busInterno.Obter(representante.InternoId.GetValueOrDefault()); if (!string.IsNullOrEmpty(aux.Fisica.ConjugeCPF)) { aux.Fisica.ConjugeId = _da.ExistePessoa(aux.Fisica.ConjugeCPF, pessoa.CredenciadoId.GetValueOrDefault()); if (aux.Fisica.ConjugeId.GetValueOrDefault() <= 0) { Pessoa aux2 = _busInterno.Obter(aux.Fisica.ConjugeCPF); aux2.CredenciadoId = User.FuncionarioId; aux2.InternoId = aux.Id; aux2.Fisica.ConjugeId = 0; aux2.Fisica.ConjugeCPF = string.Empty; aux2.Id = 0; if (!_validar.Salvar(aux2, true)) { bancoDeDados.Rollback(); return(false); } _da.Salvar(aux2, bancoDeDados); aux.Fisica.ConjugeId = aux2.Id; } } aux.CredenciadoId = User.FuncionarioId; aux.InternoId = aux.Id; aux.Id = 0; if (!_validar.Salvar(aux)) { bancoDeDados.Rollback(); return(false); } _da.Salvar(aux, bancoDeDados); representante.Id = aux.Id; } } #endregion } else { #region Conjuge if (pessoa.IsValidarConjuge && (pessoa.Fisica.EstadoCivil.GetValueOrDefault() == (int)ePessoaEstadoCivil.Casado || pessoa.Fisica.EstadoCivil.GetValueOrDefault() == (int)ePessoaEstadoCivil.Amasiado)) { if (pessoa.Fisica.Conjuge != null && pessoa.Fisica.Conjuge.IsCopiado) { if (!_validar.Salvar(pessoa.Fisica.Conjuge, true)) { bancoDeDados.Rollback(); return(false); } pessoa.Fisica.Conjuge.CredenciadoId = User.FuncionarioId; _da.Salvar(pessoa.Fisica.Conjuge, bancoDeDados); pessoa.Fisica.ConjugeId = pessoa.Fisica.Conjuge.Id; } if (pessoa.Fisica.ConjugeId <= 0 && !string.IsNullOrEmpty(pessoa.Fisica.ConjugeCPF)) { pessoa.Fisica.ConjugeId = _da.ExistePessoa(pessoa.Fisica.ConjugeCPF, pessoa.CredenciadoId.GetValueOrDefault()); if (pessoa.Fisica.ConjugeId.GetValueOrDefault() <= 0) { aux = _busInterno.Obter(pessoa.Fisica.ConjugeCPF); aux.CredenciadoId = User.FuncionarioId; aux.InternoId = aux.Id; aux.Fisica.ConjugeId = 0; aux.Fisica.ConjugeCPF = string.Empty; aux.Id = 0; if (!_validar.Salvar(aux, true)) { bancoDeDados.Rollback(); return(false); } _da.Salvar(aux, bancoDeDados); pessoa.Fisica.ConjugeId = aux.Id; } } } #endregion } #region Conjuge if (pessoa.Id > 0 && pessoa.IsFisica) { Pessoa pessoaBanco = _da.Obter(pessoa.Id); //Remover conjuge anterior if ((pessoaBanco.Fisica.ConjugeId ?? 0) > 0 && (pessoaBanco.Fisica.ConjugeId ?? 0) != (pessoa.Fisica.ConjugeId ?? 0)) { //Volta estado Civil anterior [Default - 1 Solteiro(a)] int estadoCivil = _da.ObterEstadoCivilAnterior(pessoaBanco.Fisica.ConjugeId.GetValueOrDefault()) ?? 1; _da.AlterarEstadoCivil(pessoaBanco.Fisica.ConjugeId.GetValueOrDefault(), estadoCivil, bancoDeDados); } } //Alterar o estado civil do conjuge if (pessoa.IsFisica && (pessoa.Fisica.ConjugeId ?? 0) > 0) { _da.AlterarEstadoCivil(pessoa.Fisica.ConjugeId.GetValueOrDefault(), pessoa.Fisica.EstadoCivil.GetValueOrDefault(), bancoDeDados); } #endregion _da.Salvar(pessoa, bancoDeDados); if (!Validacao.EhValido) { bancoDeDados.Rollback(); return(false); } bancoDeDados.Commit(); } } } catch (Exception exc) { Validacao.AddErro(exc); } return(Validacao.EhValido); }
public bool VerificarPessoaFisica(Pessoa pessoa, bool isConjuge = false) { VerificarCriarCpf(pessoa, isConjuge); if (String.IsNullOrWhiteSpace(pessoa.Fisica.Nome)) { Validacao.Add(Mensagem.Pessoa.ObrigatorioNomeMsg(isConjuge)); } if (string.IsNullOrWhiteSpace(pessoa.Fisica.Nacionalidade)) { Validacao.Add(Mensagem.Pessoa.ObrigatorioNacionalidadeMsg(isConjuge)); } if (string.IsNullOrWhiteSpace(pessoa.Fisica.Naturalidade)) { Validacao.Add(Mensagem.Pessoa.ObrigatorioNaturalidadeMsg(isConjuge)); } if (!pessoa.Fisica.Sexo.HasValue && isConjuge) { Validacao.Add(Mensagem.Pessoa.ObrigatorioSexoMsg(isConjuge)); } else { if (pessoa.Fisica.Sexo <= 0) { Validacao.Add(Mensagem.Pessoa.ObrigatorioSexoMsg(isConjuge)); } } if (pessoa.Fisica.EstadoCivil <= 0) { Validacao.Add(Mensagem.Pessoa.ObrigatorioEstadoCivilMsg(isConjuge)); } if (pessoa.Fisica.DataNascimento.GetValueOrDefault() == DateTime.MinValue) { Validacao.Add(Mensagem.Pessoa.DataNascimentoObrigatoriaMsg(isConjuge)); } else { VerificarFisicaDataNascimento(pessoa.Fisica.DataNascimento, isConjuge); } if (pessoa.Fisica.ConjugeId.GetValueOrDefault() > 0) { if (_da.ExistePessoa(pessoa.Fisica.ConjugeCPF, pessoa.CredenciadoId.GetValueOrDefault(), BancoValidar) <= 0) { Validacao.Add(Mensagem.Pessoa.ConjugeNaoExiste); } if (pessoa.Fisica.ConjugeId == pessoa.Id) { Validacao.Add(Mensagem.Pessoa.PessoaConjugeSaoIguais); } if (_da.ValidarConjugeAssociado(pessoa.CPFCNPJ, pessoa.Fisica.ConjugeCPF, User.EtramiteIdentity.FuncionarioId)) { Validacao.Add(Mensagem.Pessoa.ConjugeJaAssociado); } } else if (pessoa.Fisica.Conjuge != null && !string.IsNullOrEmpty(pessoa.Fisica.Conjuge.CPFCNPJ)) { if (pessoa.Fisica.Conjuge.CPFCNPJ == pessoa.CPFCNPJ) { Validacao.Add(Mensagem.Pessoa.PessoaConjugeSaoIguais); } if (_da.ValidarConjugeAssociado(pessoa.CPFCNPJ, pessoa.Fisica.Conjuge.CPFCNPJ, pessoa.CredenciadoId.GetValueOrDefault())) { Validacao.Add(Mensagem.Pessoa.ConjugeJaAssociado); } } if (!pessoa.IsCopiado && pessoa.Fisica.ConjugeId.GetValueOrDefault() > 0 && !isConjuge && User != null) { pessoa.Fisica.Conjuge = _da.Obter(pessoa.Fisica.ConjugeId.GetValueOrDefault(), null, simplificado: false); VerificarPessoaFisica(pessoa.Fisica.Conjuge, true); } return(Validacao.EhValido); }