コード例 #1
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);
        }
コード例 #2
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);
        }