public void ValidarDuplicidadeCNPJDeEmpresaEmAlteracao(Empresa empresaEmAlteracao)
        {
            Documento cnpjEmpresaEncontradaNoBancoDeDados = this._empresaEncontradaNoBancoDeDados.Documentos.Single(e => (e.TipoDocumento.Equals(TipoDocumento.CNPJ)));
            Documento cnpjEmpresaEmAlteracao = empresaEmAlteracao.Documentos.Single(e => (e.TipoDocumento.Equals(TipoDocumento.CNPJ)));

            if ((!this._empresaEncontradaNoBancoDeDados.Equals(empresaEmAlteracao)) && (cnpjEmpresaEncontradaNoBancoDeDados.Equals(cnpjEmpresaEmAlteracao)))
                throw new ExcecaoCNPJJaCadastrado(cnpjEmpresaEmAlteracao.ValorDocumento);
        }
        public void ValidarDuplicidadeCNPJDeNovaEmpresa(Empresa novaEmpresa)
        {
            Documento cnpjEmpresaEncontradaNoBancoDeDados;

            try {
                cnpjEmpresaEncontradaNoBancoDeDados = this._empresaEncontradaNoBancoDeDados.Documentos.SingleOrDefault(e => (e.TipoDocumento.Equals(TipoDocumento.CNPJ)));
            } catch (NullReferenceException) {
                return;
            }

            Documento cnpjNovaEmpresa                     = novaEmpresa.Documentos.Single(e => (e.TipoDocumento.Equals(TipoDocumento.CNPJ)));

            if (cnpjEmpresaEncontradaNoBancoDeDados.Equals(cnpjNovaEmpresa))
                throw new ExcecaoCNPJJaCadastrado(cnpjNovaEmpresa.ValorDocumento);
        }
        public Dado_Um_Atendimento()
        {
            var empresaStub = new Mock<Empresa>();
            empresaStub.Setup(e => e.Id)
                       .Returns(1);

            var clienteStub = new Mock<Cliente>();
            clienteStub.Setup(c => c.Id)
                       .Returns(1);

            var fpagtoStub = new Mock<FormaPagamento>();
            fpagtoStub.Setup(c => c.Id)
                      .Returns(1);

            this._empresaValida = empresaStub.Object;
            this._clienteValido = clienteStub.Object;
            this._fpagtoValida = fpagtoStub.Object;
        }
        public void ValidarCamposObrigatorios(Empresa empresa)
        {
            try {
                if (empresa.Documentos.Single(e => (e.TipoDocumento.Equals(TipoDocumento.CNPJ)))  == null)
                    throw new ExcecaoCNPJNaoInformado();
            } catch(Exception) {
                throw new ExcecaoCNPJNaoInformado();
            }

            try {
                if (empresa.Telefones.FirstOrDefault() == null)
                    throw new ExcecaoNenhumTelefoneInformado();
            } catch (ArgumentNullException) {
                throw new ExcecaoNenhumTelefoneInformado();
            }

            try {
                if (empresa.Enderecos.Single(e => (e.TipoEndereco.Equals(TipoEndereco.Comercial))) != null)
                    return;
            } catch (Exception) {
                throw new ExcecaoEnderecoComercialNaoInformado();
            }
        }
 public Dado_Um_ValidadorEmpresa()
 {
     this._empresaPadrao = EmpresaStub.GetInstance(0, "MR VIDRACARIA", DateTime.Now);
     this._telefonePadrao = new Telefone("(43) 3534-2350", TipoTelefone.Comercial);
     this._enderecoPadrao = new Endereco("Rua de teste", "823", new CEP("86430-000"), CidadeStub.GetInstance(1, "SANTO ANTÔNIO DA PLATINA", EstadoStub.GetInstance(1, "PR")), TipoEndereco.Comercial);
 }
        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;
        }
 public ValidadorEmpresa(Empresa empresaEncontradaNoBancoDeDados)
 {
     this._empresaEncontradaNoBancoDeDados = empresaEncontradaNoBancoDeDados;
 }
 public Dado_Uma_Empresa()
 {
     this._empresaPadrao = new Empresa("MR VIDRAÇARIA", DateTime.Now);
 }
        public void Devo_Conseguir_Criar_Uma_Pessoa_Valida()
        {
            Pessoa pessoa = new Empresa("Cbn Informática   ", DateTime.Now);

            Assert.AreEqual(pessoa.Nome, "CBN INFORMÁTICA");
        }
 public void Nao_Devo_Conseguir_Criar_Com_Nome_Invalido()
 {
     Pessoa empresa = new Empresa("", DateTime.Now);
 }
 public void Nao_Devo_Conseguir_Criar_Com_Data_Invalida()
 {
     Pessoa empresa = new Empresa("MR VIDRAÇARIA", default(System.DateTime));
 }