public void Devo_Conseguir_Validar_Um_Cliente_Em_Alteracao_Se_Nao_For_Encontrado_Nenhum_CPF_Igual_Ao_Dele()
        {
            Cliente clienteEmAlteracao = ClienteStub.GetInstance(1, "LIONEL MESSI", DateTime.Now);

            clienteEmAlteracao.AdicionaDocumento(new CPF("12345678901234"));

            ValidadorCliente validador = new ValidadorCliente(null);

            validador.ValidarDuplicidadeCPFDeClienteEmAlteracao(clienteEmAlteracao);
        }
        public void Nao_Devo_Conseguir_Validar_Um_Novo_Cliente_Com_CPF_Cadastrado_Para_Outro_Cliente()
        {
            Cliente novoCliente = ClienteStub.GetInstance(0, "LIONEL MESSI", DateTime.Now);

            novoCliente.AdicionaDocumento(new CPF("12345678901234"));

            Cliente clienteCadastradoNoBancoDeDados = this._clientePadrao;

            clienteCadastradoNoBancoDeDados.AdicionaDocumento(new CPF("12345678901234"));

            ValidadorCliente validador = new ValidadorCliente(clienteCadastradoNoBancoDeDados);

            validador.ValidarDuplicidadeCPFDeNovoCliente(novoCliente);
        }
        public void Nao_Devo_Conseguir_Validar_Um_Cliente_Em_Alteracao_Com_CPF_Cadastrado_Para_Outro_Cliente()
        {
            Cliente clienteEmAlteracao = ClienteStub.GetInstance(1, "LIONEL MESSI", DateTime.Now);

            clienteEmAlteracao.AdicionaDocumento(new CPF("12345678901234"));

            Cliente clienteCadastradoNoBancoDeDados = ClienteStub.GetInstance(2, "LIONEL MESSI", DateTime.Now);

            clienteCadastradoNoBancoDeDados.AdicionaDocumento(new CPF("12345678901234"));

            ValidadorCliente validador = new ValidadorCliente(clienteCadastradoNoBancoDeDados);

            validador.ValidarDuplicidadeCPFDeClienteEmAlteracao(clienteEmAlteracao);
        }
        public void Nao_Devo_Conseguir_Validar_Sem_Nenhum_Endereco()
        {
            this._clientePadrao.AdicionaDocumento(new CPF("12345678901234"));
            this._clientePadrao.AdicionaTelefone(this._telefonePadrao);

            ValidadorCliente validador = new ValidadorCliente(null);

            try
            {
                validador.ValidarCamposObrigatorios(this._clientePadrao);
            }
            catch (ExcecaoNenhumEnderecoInformado)
            {
                this._clientePadrao.AdicionaEndereco(this._enderecoPadrao);
                this._clientePadrao.RemoveEndereco(this._enderecoPadrao);
                validador.ValidarCamposObrigatorios(this._clientePadrao);
            }
        }
        public void Nao_Devo_Conseguir_Validar_Sem_Nenhum_CPF_Adicionado()
        {
            this._clientePadrao.AdicionaTelefone(this._telefonePadrao);
            this._clientePadrao.AdicionaEndereco(this._enderecoPadrao);

            ValidadorCliente validador = new ValidadorCliente(null);

            try
            {
                // Primeiro testo se não há nenhum cpf com a coleção nula
                validador.ValidarCamposObrigatorios(this._clientePadrao);
            }
            catch (ExcecaoCPFNaoInformado)
            {
                // Depois testo com a coleção instânciada
                this._clientePadrao.AdicionaDocumento(new RG("89457968"));
                validador.ValidarCamposObrigatorios(this._clientePadrao);
            }
        }
Exemple #6
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);
        }