Exemplo n.º 1
0
        public bool SalvarPublico(CredenciadoPessoa credenciado)
        {
            try
            {
                if (credenciado.Pessoa.IsFisica)
                {
                    if (credenciado.Pessoa.Fisica.Conjuge != null && !String.IsNullOrWhiteSpace(credenciado.Pessoa.Fisica.Conjuge.CPFCNPJ))
                    {
                        _validarPessoa.Salvar(credenciado.Pessoa.Fisica.Conjuge, true);
                    }
                }

                _validar.Salvar(credenciado, true);

                if (Validacao.EhValido)
                {
                    credenciado.Situacao = credenciado.Tipo == (int)eCredenciadoTipo.OrgaoParceiroConveniado ? (int)eCredenciadoSituacao.Cadastrado : (int)eCredenciadoSituacao.AguardandoAtivacao;

                    Executor executor = new Executor();
                    executor.Nome = credenciado.Nome;
                    executor.Tipo = eExecutorTipo.Credenciado;

                    GerenciadorTransacao.ObterIDAtual();

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

                        credenciado.Chave = GerarChaveAcesso(credenciado.Email, credenciado.Pessoa.NomeRazaoSocial);

                        _da.Salvar(credenciado, bancoDeDados, executor);

                        if (credenciado.Pessoa.IsJuridica)
                        {
                            foreach (Pessoa pessoa in credenciado.Pessoa.Juridica.Representantes)
                            {
                                if (pessoa.Fisica.Conjuge != null && !string.IsNullOrEmpty(pessoa.Fisica.Conjuge.CPFCNPJ))
                                {
                                    pessoa.Fisica.Conjuge.CredenciadoId = credenciado.Id;
                                    _pessoaCredenciadoBus.SalvarPublico(pessoa.Fisica.Conjuge, bancoDeDados, executor);
                                    pessoa.Fisica.ConjugeId = pessoa.Fisica.Conjuge.Id;
                                }

                                pessoa.CredenciadoId = credenciado.Id;
                                _pessoaCredenciadoBus.SalvarPublico(pessoa, bancoDeDados, executor);
                            }
                        }
                        else if (credenciado.Pessoa.Fisica.Conjuge != null && !string.IsNullOrEmpty(credenciado.Pessoa.Fisica.Conjuge.CPFCNPJ))
                        {
                            credenciado.Pessoa.Fisica.Conjuge.CredenciadoId = credenciado.Id;
                            _pessoaCredenciadoBus.SalvarPublico(credenciado.Pessoa.Fisica.Conjuge, bancoDeDados, executor);
                            credenciado.Pessoa.Fisica.ConjugeId = credenciado.Pessoa.Fisica.Conjuge.Id;
                        }

                        credenciado.Pessoa.CredenciadoId = credenciado.Id;
                        credenciado.Pessoa.IsCredenciado = true;
                        _pessoaCredenciadoBus.SalvarPublico(credenciado.Pessoa, bancoDeDados, executor);

                        _da.Editar(credenciado, bancoDeDados, gerarHistorico: false);

                        Historico historico = new Historico();
                        historico.Gerar(credenciado.Id, eHistoricoArtefato.credenciado, eHistoricoAcao.criar, bancoDeDados, executor);

                        if (credenciado.Tipo != (int)eCredenciadoTipo.OrgaoParceiroConveniado)
                        {
                            EnviarEmail(credenciado, credenciado.Email);
                        }

                        if (!Validacao.EhValido)
                        {
                            bancoDeDados.Rollback();
                        }
                        else
                        {
                            bancoDeDados.Commit();
                        }
                    }
                }
            }
            catch (Exception exc)
            {
                Validacao.AddErro(exc);
            }

            return(Validacao.EhValido);
        }