예제 #1
0
        public FrmNovoFamiliar(CRUD crud, DTOPessoa pessoa)
        {
            InitializeComponent();
            acaoNaTelaSelecionada = crud;
            switch (crud)
            {
            case CRUD.Alterar:
                Text = "Alterar " + pessoa.Nome;
                PreencheFrm(pessoa);
                break;

            case CRUD.Consultar:
                Text = "Consultar Pessoa";
                PreencheFrm(pessoa);
                break;

            case CRUD.Deletar:
                Text = "Excluir Pessoa";
                break;

            case CRUD.Inserir:
                Text = "Inserir Pessoa";
                break;

            default:
                break;
            }
        }
예제 #2
0
        public void CarregarEmpresaNaTela(DTOPessoa dto)
        {
            if (dto == null)
            {
                return;
            }

            this._visao.SetID(dto.ID);
            this._visao.SetNome(dto.Nome);
            this._visao.SetDtFundacao(dto.DtNascimento);

            this._visao.LimparGridDeDocumentos();
            foreach (DTODocumento doc in dto.Documentos)
            {
                this._visao.AdicionarDocumentoNoGrid(doc.ValorDocumento, NomeTipoDocumento.ObtemString(doc.TipoDocumento));
            }

            this._visao.LimparGridDeTelefones();
            foreach (DTOTelefone tel in dto.Telefones)
            {
                this._visao.AdicionarTelefoneNoGrid(tel.Telefone, NomeTipoTelefone.ObtemString(tel.Tipo));
            }

            this._visao.LimparGridDeEnderecos();
            foreach (DTOEndereco end in dto.Enderecos)
            {
                this._visao.AdicionarEnderecoNoGrid(end.Logradouro, end.Numero, end.Cep.ToStringFormatado(), end.Cidade.ID, end.Cidade.Nome, NomeTipoEndereco.ObtemString(end.TipoEndereco));
            }
        }
예제 #3
0
        /// <summary>
        /// Procura os dados das pessoas mediante uma pesquisa.
        /// </summary>
        /// <param name="nome"></param>
        /// <returns></returns>
        public PessoaCollection ConsultarPorNome(string nome)
        {
            try
            {
                PessoaCollection pessoaCollection = new PessoaCollection();
                acessoDadosMySql.LimparParametros();
                acessoDadosMySql.AdicionarParametros("nomeParam", nome);

                DataTable dataTableCandidato = acessoDadosMySql.ExecutarConsulta(CommandType.StoredProcedure, "sp_PessoaSelecionar");

                foreach (DataRow linha in dataTableCandidato.Rows)
                {
                    DTOPessoa pessoa = new DTOPessoa();

                    pessoa.Id          = Convert.ToInt16(linha["idPessoa"]);
                    pessoa.Nome        = Convert.ToString(linha["Nome"]);
                    pessoa.Idade       = Convert.ToString(linha["Idade"]);
                    pessoa.Sexo        = Convert.ToString(linha["Sexo"]);
                    pessoa.Total       = Convert.ToDouble(linha["TotalGastos"]);
                    pessoa.Porcentagem = Convert.ToDecimal(linha["TotalPorcentagem"]);
                    pessoaCollection.Add(pessoa);
                }
                return(pessoaCollection);
            }
            catch (Exception exception)
            {
                throw new Exception("Não foi possível consultar por Nome. Detalhes: " + exception.Message);
            }
        }
예제 #4
0
        public ControladorAtendimento(IVisaoAtendimento visao)
            : base(visao)
        {
            this._fachada               = ObjectFactory.GetInstance <IFachadaAtendimento>();
            this._fachadaEmpresa        = ObjectFactory.GetInstance <IFachadaEmpresa>();
            this._fachadaCliente        = ObjectFactory.GetInstance <IFachadaCliente>();
            this._fachadaFormaPagamento = ObjectFactory.GetInstance <IFachadaFormaPagamento>();
            this._fachadaServico        = ObjectFactory.GetInstance <IFachadaServico>();

            this.AlterarEstado(TipoEstadoAtendimento.DigitacaoCabecalho);
            this._visao.SetData(DateTime.Now);
            this._visao.MandarFocoNoCliente();

            try
            {
                DTOPessoa pessoa = this._fachadaEmpresa.ObterEmpresa();
                this._visao.SetIdEmpresa(pessoa.ID);
                this._visao.SetRazaoSocialEmpresa(pessoa.Nome);
            }
            catch (NullReferenceException)
            {
                this._visaoPadrao.ExibirErro("É preciso cadastrar a empresa para fazer um atendimento!");
                this._visao.VoltarParaTelaAnterior();
            }
        }
예제 #5
0
        public void BuscarCliente(long idCliente)
        {
            DTOPessoa dtoCliente = this._fachadaCliente.Obter(idCliente);

            if ((dtoCliente == null) || (dtoCliente.Status.Equals(TipoStatus.Bloqueado)))
            {
                if (this._visao.AchouCliente(out idCliente))
                {
                    dtoCliente = this._fachadaCliente.Obter(idCliente);

                    if (dtoCliente != null)
                    {
                        this._visao.SetIdCliente(dtoCliente.ID);
                        this._visao.SetNomeCliente(dtoCliente.Nome);
                        return;
                    }
                }

                this._visao.SetNomeCliente(String.Empty);
                this._visao.MandarFocoNoCliente();
            }
            else
            {
                this._visao.SetIdCliente(dtoCliente.ID);
                this._visao.SetNomeCliente(dtoCliente.Nome);
            }
        }
예제 #6
0
        private void btnExcluir_Click(object sender, EventArgs e)
        {
            if (dataGridViewFamiliares.SelectedRows.Count == 0)
            {
                MessageBox.Show("Nenhuma pessoa selecionada.");
                return;
            }
            DialogResult resultado = MessageBox.Show("Tem certeza?", "Pergunta", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

            if (resultado == DialogResult.No)
            {
                return;
            }
            DTOPessoa     pessoaSelecionada = (dataGridViewFamiliares.SelectedRows[0].DataBoundItem as DTOPessoa);
            PessoaControl pessoaControl     = new PessoaControl();
            string        retorno           = pessoaControl.PessoaDeletar(pessoaSelecionada);

            try
            {
                MessageBox.Show(retorno, "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Information);
                AtualizarGrid();
            }
            catch (Exception ex)
            {
                MessageBox.Show("O Banco de Dados não está disponível no momento, tente novamente mais tarde/n/n/n" + ex.Message, "System");
            }
        }
예제 #7
0
        private void btnEntrar_Click(object sender, EventArgs e)
        {
            try
            {
                DTOPessoa tryEntrarDTO = new DTOPessoa();

                tryEntrarDTO.Nome  = txtUsuario.Text;
                tryEntrarDTO.Senha = txtSenha.Text;

                PessoaControl control  = new PessoaControl();
                string        permitir = control.PessoaEntrar(tryEntrarDTO);
                if (permitir == "Acesso Permitido")
                {
                    FrmMenuPrincipal abrir = new FrmMenuPrincipal();
                    abrir.Show();

                    this.Hide();
                    lblErroLogin.Visible = false;
                }
                else
                {
                    lblErroLogin.Text    = "Oops! O usuário ou senha estão incorretos!";
                    lblErroLogin.Visible = true;
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("O Banco de Dados pode estar offline :(" + ex.Message, "Login", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
예제 #8
0
        public Boolean AlterarStatus(DTOPessoa dtoSelecionado)
        {
            Pessoa cliente = this._repositorio.Obter(dtoSelecionado.ID);

            cliente.AlteraStatus();

            return(true);
        }
예제 #9
0
 private void HomemOuMulher(DTOPessoa pessoa)
 {
     if (radioMasc.Checked == true)
     {
         pessoa.Sexo = radioMasc.Text;
     }
     else
     {
         pessoa.Sexo = radioFem.Text;
     }
 }
예제 #10
0
        public string PessoaDataNascimento(DTOPessoa pessoa)
        {
            string retorno;

            try
            {
                acessoDadosMySql.LimparParametros();
                acessoDadosMySql.AdicionarParametros("idParam", pessoa.Id);
                retorno = acessoDadosMySql.ExecutarManipulacao(CommandType.StoredProcedure, "sp_PessoaDataNasc").ToString();
            }
            catch (Exception ex)
            {
                retorno = "Banco " + ex.Message;
            }
            return(retorno);
        }
예제 #11
0
        protected DTOPessoa ConverteEntidadeParaDTO(Pessoa entidade)
        {
            DTOPessoa dto = null;

            if (entidade != null)
            {
                dto              = new DTOPessoa();
                dto.ID           = entidade.Id;
                dto.DtNascimento = entidade.DtNascimento;
                dto.Nome         = entidade.Nome;
                dto.Status       = entidade.Status;

                foreach (Documento doc in entidade.Documentos)
                {
                    DTODocumento dtoDoc = new DTODocumento();
                    dtoDoc.ValorDocumento = doc.ToStringFormatado();
                    dtoDoc.TipoDocumento  = doc.TipoDocumento;

                    dto.AdicionarDocumento(dtoDoc);
                }

                foreach (Telefone tel in entidade.Telefones)
                {
                    DTOTelefone dtoTel = new DTOTelefone();
                    dtoTel.Telefone = tel.ToStringFormatado();
                    dtoTel.Tipo     = tel.Tipo;

                    dto.AdicionarTelefone(dtoTel);
                }

                foreach (Endereco end in entidade.Enderecos)
                {
                    DTOEndereco dtoEnd = new DTOEndereco();
                    dtoEnd.Logradouro   = end.Logradouro;
                    dtoEnd.Numero       = end.Numero;
                    dtoEnd.TipoEndereco = end.TipoEndereco;
                    dtoEnd.Cep          = end.Cep;
                    DTOCidade dtoCidade = _fachadaCidade.Obter(end.Cidade.Id);
                    dtoEnd.Cidade = dtoCidade;

                    dto.AdicionarEndereco(dtoEnd);
                }
            }

            return(dto);
        }
예제 #12
0
        public string PessoaEntrar(DTOPessoa pessoa)
        {
            string retorno;

            try
            {
                acessoDadosMySql.LimparParametros();
                acessoDadosMySql.AdicionarParametros("nomeParam", pessoa.Nome);
                acessoDadosMySql.AdicionarParametros("senhaParam", pessoa.Senha);
                retorno = acessoDadosMySql.ExecutarManipulacao(CommandType.StoredProcedure, "sp_LoginEntrar").ToString();
            }
            catch
            {
                retorno = "";
            }
            return(retorno);
        }
예제 #13
0
        private void SalvarDadosInseridos()
        {
            if (txtSenha.Text.Length < 4 || txtSenha.Text.Length > 16)
            {
                MessageBox.Show("A senha deve ter entre 4 e 16 caracteres, tente novamente", "Senha Incorreta", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtSenha.Clear();
            }
            else
            {
                if (txtSenha.Text != txtSenhaConfirma.Text)
                {
                    MessageBox.Show("As senhas nao se coincidem", "Sistema", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    txtSenhaConfirma.BackColor = Color.Tomato;
                }
                else
                {
                    txtSenhaConfirma.BackColor = Color.White;
                    try
                    {
                        DTOPessoa     pessoa  = new DTOPessoa();
                        PessoaControl control = new PessoaControl();

                        string theDate = dateNascimento.Value.ToShortDateString();

                        theDate.Replace('/', '-');

                        pessoa.Idade = theDate;

                        pessoa.Nome = nome;

                        HomemOuMulher(pessoa);

                        pessoa.Senha = txtSenha.Text;
                        DialogResult resultado = MessageBox.Show(control.PessoaInserir(pessoa), "Novo Familiar", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        if (resultado == DialogResult.OK)
                        {
                            LimparCampos();
                        }
                    }
                    catch
                    {
                        MessageBox.Show("Não foi possível armazenar os dados preenchidos", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
        }
예제 #14
0
        private void PreencheFrm(DTOPessoa pessoa)
        {
            txtNome.Text = pessoa.Nome;
            if (pessoa.Sexo == "Masculino")
            {
                radioMasc.Checked = true;
            }
            else
            {
                radioFem.Checked = true;
            }
            lblCodigo.Text = pessoa.Id.ToString();

            PessoaControl control = new PessoaControl();

            dateNascimento.Text      = pessoa.Idade;
            txtSenha.Enabled         = false;
            txtSenhaConfirma.Enabled = false;
        }
예제 #15
0
        private void SalvarDadosAlterados()
        {
            DTOPessoa     pessoa  = new DTOPessoa();
            PessoaControl control = new PessoaControl();

            pessoa.Idade = dateNascimento.Value.ToString();

            pessoa.Nome = txtNome.Text;
            HomemOuMulher(pessoa);

            pessoa.Id = int.Parse(lblCodigo.Text);

            DialogResult resultado = MessageBox.Show(control.PessoaAlterar(pessoa), "Alterar Familiar", MessageBoxButtons.OK, MessageBoxIcon.Information);

            if (resultado == DialogResult.OK)
            {
                LimparCampos();
            }
        }
예제 #16
0
        /// <summary>
        /// Altera uma pessoa existente no Banco de Dados.
        /// </summary>
        /// <param name="pessoa"></param>
        /// <returns></returns>
        public string PessoaAlterar(DTOPessoa pessoa)
        {
            string retorno;

            try
            {
                acessoDadosMySql.LimparParametros();
                acessoDadosMySql.AdicionarParametros("idParam", pessoa.Id);
                acessoDadosMySql.AdicionarParametros("nomeParam", pessoa.Nome);
                acessoDadosMySql.AdicionarParametros("idadeParam", pessoa.Idade);
                acessoDadosMySql.AdicionarParametros("sexoParam", pessoa.Sexo);
                retorno = acessoDadosMySql.ExecutarManipulacao(CommandType.StoredProcedure, "sp_PessoaAlterar").ToString();
            }
            catch (Exception ex)
            {
                retorno = "Banco " + ex.Message;
            }
            return(retorno);
        }
예제 #17
0
 private void btnAlterar_Click(object sender, EventArgs e)
 {
     try
     {
         if (dataGridViewFamiliares.SelectedRows.Count == 0)
         {
             MessageBox.Show("Nenhuma pessoa selecionada.");
             return;
         }
         DTOPessoa       pessoaSelecionada = (dataGridViewFamiliares.SelectedRows[0].DataBoundItem as DTOPessoa);
         FrmNovoFamiliar frmNovoFamiliar   = new FrmNovoFamiliar(CRUD.Alterar, pessoaSelecionada);
         DialogResult    resultado         = frmNovoFamiliar.ShowDialog();
         if (resultado == DialogResult.OK)
         {
             AtualizarGrid();
         }
     }
     catch (Exception ex)
     {
         MessageBox.Show("Um erro inesperado aconteceu, algo está errado! :(\n" + ex.Message, "System");
     }
 }
예제 #18
0
        public Boolean Gravar(DTOPessoa dtoEmpresaQueVaiSerPersistida)
        {
            if (dtoEmpresaQueVaiSerPersistida == null)
            {
                return(false);
            }

            Pessoa pessoa = this._repositorio.Obter(dtoEmpresaQueVaiSerPersistida.ID);

            if (pessoa == null)
            {
                pessoa = new Empresa(dtoEmpresaQueVaiSerPersistida.Nome, dtoEmpresaQueVaiSerPersistida.DtNascimento);
            }
            else
            {
                pessoa.Nome         = dtoEmpresaQueVaiSerPersistida.Nome;
                pessoa.DtNascimento = dtoEmpresaQueVaiSerPersistida.DtNascimento;
            }

            pessoa.LimparColecoes();
            foreach (DTODocumento dto in dtoEmpresaQueVaiSerPersistida.Documentos)
            {
                pessoa.AdicionaDocumento(dto.ConverteDTOParaDocumento());
            }

            foreach (DTOTelefone dto in dtoEmpresaQueVaiSerPersistida.Telefones)
            {
                pessoa.AdicionaTelefone(dto.ConverteDTOParaTelefone());
            }

            foreach (DTOEndereco dto in dtoEmpresaQueVaiSerPersistida.Enderecos)
            {
                pessoa.AdicionaEndereco(dto.ConverteDTOParaEndereco(x => this._repositorioCidade.Obter(x.ID)));
            }

            DTODocumento dtoDocumento = dtoEmpresaQueVaiSerPersistida.Documentos.SingleOrDefault(d => (d.TipoDocumento.Equals(TipoDocumento.CNPJ)));
            CNPJ         cnpj;

            try
            {
                cnpj = dtoDocumento.ValorDocumento;
            }
            catch (NullReferenceException)
            {
                cnpj = null;
            }

            Pessoa  pessoaComOMesmoCNPJ = this._repositorio.ObterPorDocumento(cnpj);
            Empresa empresaEncontradaNoBD;

            if (pessoaComOMesmoCNPJ != null)
            {
                empresaEncontradaNoBD = (Empresa)pessoaComOMesmoCNPJ;
            }
            else
            {
                empresaEncontradaNoBD = null;
            }

            // Efetuando as validações
            ValidadorEmpresa validador = new ValidadorEmpresa(empresaEncontradaNoBD);

            Empresa empresaQueVaiSerPersistida = (Empresa)pessoa;

            validador.ValidarCamposObrigatorios(empresaQueVaiSerPersistida);

            if (dtoEmpresaQueVaiSerPersistida.IsNovo())
            {
                validador.ValidarDuplicidadeCNPJDeNovaEmpresa(empresaQueVaiSerPersistida);
            }
            else
            {
                validador.ValidarDuplicidadeCNPJDeEmpresaEmAlteracao(empresaQueVaiSerPersistida);
            }

            this._repositorio.Salvar(pessoa);
            dtoEmpresaQueVaiSerPersistida.ID = pessoa.Id;;

            return(true);
        }
예제 #19
0
        public void Gravar()
        {
            DTOPessoa dto = new DTOPessoa();

            dto.ID           = this._visao.GetID();
            dto.Nome         = this._visao.GetNome();
            dto.DtNascimento = this._visao.GetDtFundacao();

            IList <String> TiposInválidos = new List <String>();

            for (int i = 0; i < this._visao.GetTotalDeDocumentosDoGrid(); i++)
            {
                DTODocumento dtoDoc = new DTODocumento();
                dtoDoc.ValorDocumento = this._visao.GetValorDocumentoDoGrid(i);

                try
                {
                    dtoDoc.TipoDocumento = NomeTipoDocumento.ObtemTipo(this._visao.GetTipoDocumentoDoGrid(i));
                }
                catch (ExcecaoParametroInvalido)
                {
                    TiposInválidos.Add("Informe um tipo válido para o Documento número " + (i + 1).ToString());
                }

                dto.AdicionarDocumento(dtoDoc);
            }

            for (int i = 0; i < this._visao.GetTotalDeEnderecosDoGrid(); i++)
            {
                DTOEndereco dtoEnd = new DTOEndereco();
                dtoEnd.Logradouro  = this._visao.GetLogradouroDoGrid(i);
                dtoEnd.Numero      = this._visao.GetNumeroDoGrid(i);
                dtoEnd.Cep         = this._visao.GetCEPDoGrid(i);
                dtoEnd.Cidade.ID   = this._visao.GetIDCidadeDoGrid(i);
                dtoEnd.Cidade.Nome = this._visao.GetCidadeDoGrid(i);

                try
                {
                    dtoEnd.TipoEndereco = NomeTipoEndereco.ObtemTipo(this._visao.GetTipoEnderecoDoGrid(i));
                }
                catch (ExcecaoParametroInvalido)
                {
                    TiposInválidos.Add("Informe um tipo válido para o endereço " + (i + 1).ToString());
                }

                dto.AdicionarEndereco(dtoEnd);
            }

            for (int i = 0; i < this._visao.GetTotalDeTelefonesDoGrid(); i++)
            {
                DTOTelefone dtoTel = new DTOTelefone();
                dtoTel.Telefone = this._visao.GetTelefoneDoGrid(i);

                try
                {
                    dtoTel.Tipo = NomeTipoTelefone.ObtemTipo(this._visao.GetTipoTelefoneDoGrid(i));
                }
                catch (ExcecaoParametroInvalido)
                {
                    TiposInválidos.Add("Informe um tipo válido para o telefone " + (i + 1).ToString());
                }

                dto.AdicionarTelefone(dtoTel);
            }

            if (TiposInválidos.Count.CompareTo(0) != 0)
            {
                string ErrosTiposInvalidos = string.Join("\n", TiposInválidos.ToArray());
                this._visaoPadrao.ExibirErro(ErrosTiposInvalidos);
                return;
            }

            try
            {
                if (this._fachada.Gravar(dto))
                {
                    this._visaoPadrao.Avisar("Empresa gravada com sucesso!");
                    this._visao.VoltarParaTelaAnterior();
                }
            }

            #region Exceções geradas pela classe Pessoa
            #region ExcecaoParametroInvalido
            catch (ExcecaoParametroInvalido ex)
            {
                // Pessoa
                if (ex.Message.Contains("Pessoa"))
                {
                    if (ex.Message.Contains("Nome"))
                    {
                        this._visaoPadrao.ExibirErro("Informe uma razão social válida!", "edtRazaoSocial");
                        this._visao.MandarFocoNoNome();
                    }
                    else if (ex.Message.Contains("DtAniversario"))
                    {
                        this._visaoPadrao.ExibirErro("Informe uma data de fundação válida", "edtDtFundacao");
                        this._visao.MandarFocoNaDtFundacao();
                    }
                }

                // Endereço
                else if (ex.Message.Contains("Endereco"))
                {
                    if (ex.Message.Contains("Logradouro"))
                    {
                        this._visaoPadrao.ExibirErro("Informe o logradouro para todos os endereços");
                    }

                    else if (ex.Message.Contains("Numero"))
                    {
                        this._visaoPadrao.ExibirErro("Informe o número para todos os endereços");
                    }

                    else if (ex.Message.Contains("Cep"))
                    {
                        this._visaoPadrao.ExibirErro("Informe o CEP para todos os endereços!");
                    }

                    else if (ex.Message.Contains("Cidade"))
                    {
                        this._visaoPadrao.ExibirErro("Informe a cidade para todos os endereços!");
                    }
                }

                // Telefone
                else if (ex.Message.Contains("Telefone"))
                {
                    this._visaoPadrao.ExibirErro("Informe ao menos um telefone válido (xx)xxxx-xxxx para todos os tipos de telefone adicionados!");
                }
            }
            #endregion
            #region ExcecaoDocumentoNaoPermitido
            catch (ExcecaoDocumentoNaoPermitido ex)
            {
                this._visaoPadrao.ExibirErro(ex.Message);
            }
            #endregion
            #region ExcecaoTelefoneNaoPermitido
            catch (ExcecaoTelefoneNaoPermitido ex)
            {
                this._visaoPadrao.ExibirErro(ex.Message);
            }
            #endregion
            #region ExcecaoEnderecoNaoPermitido
            catch (ExcecaoEnderecoNaoPermitido ex)
            {
                this._visaoPadrao.ExibirErro(ex.Message);
            }
            #endregion
            #region ExcecaoParametroRepetido
            catch (ExcecaoParametroRepetido ex)
            {
                if (ex.Message.Contains("Documento"))
                {
                    this._visaoPadrao.ExibirErro("Não é possível cadastrar documentos iguais. Verifique!");
                }

                if (ex.Message.Contains("Telefone"))
                {
                    this._visaoPadrao.ExibirErro("Não é possível cadastrar telefones iguais. Verifique!");
                }

                else if (ex.Message.Contains("Endereco"))
                {
                    this._visaoPadrao.ExibirErro("Não é possível cadastrar endereços iguais. Verifique!");
                }
            }
            #endregion
            #region ExcecaoTipoDocumentoDuplicado
            catch (ExcecaoTipoDocumentoDuplicado ex)
            {
                this._visaoPadrao.ExibirErro(ex.Message);
            }
            #endregion
            #endregion
            #region Exceções geradas pela class ValidadorEmpresa
            #region ExcecaoCNPJJaCadastrado
            catch (ExcecaoCNPJJaCadastrado ex)
            {
                this._visaoPadrao.ExibirErro(ex.Message);
            }
            #endregion
            #region ExcecaoCNPJNaoInformado
            catch (ExcecaoCNPJNaoInformado ex)
            {
                this._visaoPadrao.ExibirErro(ex.Message);
            }
            #endregion
            #region ExcecaoNenhumTelefoneInformado
            catch (ExcecaoNenhumTelefoneInformado ex)
            {
                this._visaoPadrao.ExibirErro(ex.Message);
            }
            #endregion
            #region ExcecaoEnderecoComercialNaoInformado
            catch (ExcecaoEnderecoComercialNaoInformado ex)
            {
                this._visaoPadrao.ExibirErro(ex.Message);
            }
            #endregion
            #endregion
        }
예제 #20
0
        public Boolean Gravar(DTOPessoa dtoClienteQueVaiSerPersistido)
        {
            if (dtoClienteQueVaiSerPersistido == null)
            {
                return(false);
            }

            Pessoa pessoa = this._repositorio.Obter(dtoClienteQueVaiSerPersistido.ID);

            if (pessoa == null)
            {
                pessoa = new Cliente(dtoClienteQueVaiSerPersistido.Nome, dtoClienteQueVaiSerPersistido.DtNascimento);
            }
            else
            {
                pessoa.Nome         = dtoClienteQueVaiSerPersistido.Nome;
                pessoa.DtNascimento = dtoClienteQueVaiSerPersistido.DtNascimento;
            }

            pessoa.LimparColecoes();
            foreach (DTODocumento dto in dtoClienteQueVaiSerPersistido.Documentos)
            {
                pessoa.AdicionaDocumento(dto.ConverteDTOParaDocumento());
            }

            foreach (DTOTelefone dto in dtoClienteQueVaiSerPersistido.Telefones)
            {
                pessoa.AdicionaTelefone(dto.ConverteDTOParaTelefone());
            }

            foreach (DTOEndereco dto in dtoClienteQueVaiSerPersistido.Enderecos)
            {
                pessoa.AdicionaEndereco(dto.ConverteDTOParaEndereco(x => this._repositorioCidade.Obter(x.ID)));
            }

            DTODocumento dtoDocumento = dtoClienteQueVaiSerPersistido.Documentos.SingleOrDefault(d => (d.TipoDocumento.Equals(TipoDocumento.CPF)));
            CPF          cpf;

            try
            {
                cpf = dtoDocumento.ValorDocumento;
            }
            catch (NullReferenceException)
            {
                cpf = null;
            }

            Pessoa  pessoaComOMesmoCPF = this._repositorio.ObterPorDocumento(cpf);
            Cliente clienteEncontradoNoBD;

            try
            {
                if (pessoaComOMesmoCPF != null)
                {
                    clienteEncontradoNoBD = (Cliente)pessoaComOMesmoCPF;
                }
                else
                {
                    clienteEncontradoNoBD = null;
                }
            }
            catch (InvalidCastException)
            {
                clienteEncontradoNoBD = null;
            }

            // Efetuando as validações
            ValidadorCliente validador = new ValidadorCliente(clienteEncontradoNoBD);

            Cliente clienteQueVaiSerPersistido = (Cliente)pessoa;

            validador.ValidarCamposObrigatorios(clienteQueVaiSerPersistido);

            if (dtoClienteQueVaiSerPersistido.IsNovo())
            {
                validador.ValidarDuplicidadeCPFDeNovoCliente(clienteQueVaiSerPersistido);
            }
            else
            {
                validador.ValidarDuplicidadeCPFDeClienteEmAlteracao(clienteQueVaiSerPersistido);
            }

            this._repositorio.Salvar(pessoa);
            dtoClienteQueVaiSerPersistido.ID = pessoa.Id;;

            return(true);
        }