Exemplo n.º 1
0
        public bool Salvar(Pessoa pessoa)
        {
            try
            {
                if (_validar.Salvar(pessoa))
                {
                    GerenciadorTransacao.ObterIDAtual();

                    using (BancoDeDados bancoDeDados = BancoDeDados.ObterInstancia())
                    {
                        bancoDeDados.IniciarTransacao();

                        #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);

                        bancoDeDados.Commit();
                    }
                }
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }
            return(Validacao.EhValido);
        }