Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }