示例#1
0
        public static DnServicoTransacionalBase GetServiceInstanceByServiceType(this Type serviceType, SessaoDeRequisicaoDoUsuario SessionRequest)
        {
            if (serviceType == null)
            {
                throw new ArgumentNullException(nameof(serviceType));
            }
            if (SessionRequest == null)
            {
                throw new ArgumentNullException(nameof(SessionRequest));
            }
            if (serviceType.Name == "DnDynamicProxy")
            {
                serviceType = serviceType.BaseType;
            }
            if (serviceType == null)
            {
                throw new ArgumentNullException(nameof(serviceType));
            }

            if (!serviceType.IsSubclassOf(typeof(DnServicoTransacionalBase)))
            {
                throw new DesenvolvimentoIncorretoException($"The service instance attempt using the {nameof(GetServiceInstanceByServiceType)} method failed because the passed type is not a {nameof(DnServicoTransacionalBase)}");
            }

            if (SessionRequest.Servicos.TryGetValue(serviceType, out var ser))
            {
                return(ser as DnServicoTransacionalBase);
            }

            var service = FabricaDeServico.Criar(serviceType, SessionRequest.LocalHttpContext, SessionRequest);

            SessionRequest.Servicos.Add(serviceType, service);

            return(service);
        }
示例#2
0
        public VendaItem Cadastre(int codigoVenda, int codigoProduto, int quantidade)
        {
            var servicoVenda   = FabricaDeServico.Crie <Venda>();
            var servicoProduto = FabricaDeServico.Crie <Produto>();

            var venda   = servicoVenda.Consulte(codigoVenda);
            var produto = servicoProduto.Consulte(codigoProduto);

            var validacaoDeVendaItem = FabricaDeValidacao.Crie <VendaItem>() as ValidacaoVendaItem;

            validacaoDeVendaItem.Cadastre(produto, venda, quantidade);

            var vendaItem = new VendaItem
            {
                Desconto  = 0m,
                IdVenda   = venda.Id,
                IdProduto = produto.Id,
                Quntidade = quantidade
            };

            vendaItem.ValorTotal = (produto.Valor * quantidade) - vendaItem.Desconto;

            if (quantidade >= 10)
            {
                vendaItem.Desconto = vendaItem.ValorTotal * 10 / 100;
            }

            vendaItem.ValorTotal -= vendaItem.Desconto;

            Cadastre(vendaItem);

            return(vendaItem);
        }
示例#3
0
        public ProdutoNaVenda Cadastre(int codigoDaVenda, int codigoDoProduto, int quantidade)
        {
            var servicoDeVenda            = FabricaDeServico.Crie <Venda>();
            var servicoDeProduto          = FabricaDeServico.Crie <Produto>();
            var validacaoDeProdutoNaVenda = FabricaDeValidacao.Crie <ProdutoNaVenda>() as ValidacaoDeProdutoNaVenda;

            var venda   = servicoDeVenda.Consulte(codigoDaVenda);
            var produto = servicoDeProduto.Consulte(codigoDoProduto);

            validacaoDeProdutoNaVenda.Cadastre(produto, venda, quantidade);

            var produtoNaVenda = new ProdutoNaVenda
            {
                IdVenda    = venda.Id,
                IdProduto  = produto.Id,
                Quantidade = quantidade
            };

            produtoNaVenda.ValorTotal = produto.Valor * quantidade;

            var desconto = 0m;

            if (quantidade >= 10)
            {
                desconto = (produtoNaVenda.ValorTotal * 10) / 100;
            }
            produtoNaVenda.Desconto    = desconto;
            produtoNaVenda.ValorTotal -= desconto;

            Cadastre(produtoNaVenda);

            return(produtoNaVenda);
        }
示例#4
0
        public static Produto CadastreUmProduto()
        {
            var servico = FabricaDeServico.Crie <Produto>();
            var produto = ObtenhaUmProduto();

            servico.Cadastre(produto);
            return(produto);
        }
示例#5
0
        public void Cadastro()
        {
            var servico = FabricaDeServico.Crie <Produto>();
            var produto = CadastrarProduto();

            Assert.NotEqual(0, produto.Codigo);
            servico.Remova(produto.Codigo);
        }
        public static Venda CadastreUmaVenda()
        {
            var servico = FabricaDeServico.Crie <Venda>();
            var venda   = ObtenhaUmaVenda();

            servico.Cadastre(venda);
            return(venda);
        }
示例#7
0
        private Produto CadastroProduto()
        {
            var produto = Produtinho();
            var servico = FabricaDeServico.Crie <Produto>();

            servico.Cadastre(produto);
            return(produto);
        }
示例#8
0
        public static Venda CadastrarVenda()
        {
            var servico = FabricaDeServico.Crie <Venda>();
            var venda   = obertVenda();

            servico.Cadastre(venda);

            return(venda);
        }
示例#9
0
        public void VendaCadastroTeste()
        {
            var servico = FabricaDeServico.Crie <Venda>();
            var venda   = ObtenhaUmaVenda();

            servico.Cadastre(venda);
            Assert.NotEqual(0, venda.Codigo);
            servico.Remova(venda.Codigo);
        }
示例#10
0
        public override void Remova(int Codigo)
        {
            var servicoVenda   = FabricaDeServico.Crie <Venda>();
            var servicoProduto = FabricaDeServico.Crie <Produto>();



            base.Remova(Codigo);
        }
示例#11
0
        public void ConsultaTeste()
        {
            var servico        = FabricaDeServico.Crie <Produto>();
            var produto        = CadastroProduto();
            var produtoDoBanco = servico.Consulte(produto.Codigo);
            var igualdade      = Compare(produto, produtoDoBanco, nameof(produto.DataDeAtualizacao), nameof(produto.DataDeCadastro));

            Assert.True(igualdade);
            servico.Remova(produto.Codigo);
        }
示例#12
0
        public void AcidionarItemNaVenda()
        {
            var servico = FabricaDeServico.Crie <VendaItem>() as ServicoDeVendaItem;

            var venda   = VendaTeste.CadastrarVenda();
            var produto = ProdutoTeste.CadastrarProduto();

            var vendaItem = servico.Cadastre(venda.Codigo, produto.Codigo, 10);

            Assert.NotEqual(0, vendaItem.Codigo);

            //Todo Remover lixo do Banco
        }
示例#13
0
        public void VendaConsultaTeste()
        {
            var servico = FabricaDeServico.Crie <Venda>();
            var venda   = CadastrarVenda();

            var vendaDoBancoDeDados = servico.Consulte(venda.Codigo);

            var isTrue = Compare(venda, vendaDoBancoDeDados, nameof(venda.DataDeCadastro), nameof(venda.DataDeAtualizacao));

            Assert.True(isTrue);

            servico.Remova(venda.Codigo);
        }
        private ProdutoNaVenda CriaProdutoEFinalizaAVenda(Venda venda)
        {
            var servico        = Servico as ServicoDeProdutoNaVenda;
            var servicoDeVenda = FabricaDeServico.Crie <Venda>() as ServicoDeVenda;

            var produto = ProdutoTeste.CadastreUmProduto();

            var produtoNaVenda = servico.Cadastre(venda.Codigo, produto.Codigo, 1);

            servicoDeVenda.FinalizeAVenda(venda);

            return(produtoNaVenda);
        }
示例#15
0
        public void CadastroSemNome()
        {
            var produto = Produtinho();

            produto.Nome = string.Empty;
            var servico = FabricaDeServico.Crie <Produto>();
            var ex      = Assert.Throws <Exception>(() =>
            {
                servico.Cadastre(produto);
            });

            Assert.Equal(ConstantesDeValidacao.O_NOME_DO_ELEMENTO_DEVE_SER_INFORMADO, ex.Message);
            //servico.Remova(produto.Nome);
        }
示例#16
0
        public void AcidionarProdutoInvalidoNaProdutoError()
        {
            var servico = FabricaDeServico.Crie <VendaItem>() as ServicoDeVendaItem;

            var venda   = VendaTeste.CadastrarVenda();
            var produto = ObtenhaUmCodigo();


            var ex = Assert.Throws <Exception>(() => {
                servico.Cadastre(venda.Codigo, produto, 10);
            });

            Assert.Equal(ex.Message, ConstantesDeValidacaoDoModel.PRODUTO_INFORMADO_NAO_LOCALIZADO);
        }
示例#17
0
        public void AcidionarProdutoNaVendaInvalidaError()
        {
            var servico = FabricaDeServico.Crie <VendaItem>() as ServicoDeVendaItem;

            var venda   = ObtenhaUmCodigo();
            var produto = ProdutoTeste.CadastrarProduto();


            var ex = Assert.Throws <Exception>(() => {
                servico.Cadastre(venda, produto.Codigo, 10);
            });

            Assert.Equal(ex.Message, ConstantesDeValidacaoDoModel.VENDA_INFORMADA_NAO_LOCALICADA);
        }
示例#18
0
        public void CadastroSemValor()
        {
            var produto = Produtinho();

            produto.Valor = 0m;
            var servico = FabricaDeServico.Crie <Produto>();
            var ex      = Assert.Throws <Exception>(() =>
            {
                servico.Cadastre(produto);
            });

            Assert.Equal(ConstantesDeValidacaoModel.VALOR_ERRADO_OTARIO, ex.Message);
            //servico.Remova(produto.Valor);
        }
示例#19
0
        public void TesteCadastroSemNomeErro()
        {
            var servico        = FabricaDeServico.Crie <UnidadeDeTeste>();
            var unidadeDeTeste = ObtenhaElementoPadrao();

            unidadeDeTeste.Nome = string.Empty;

            var ex = Assert.Throws <Exception>(() =>
            {
                servico.Cadastre(unidadeDeTeste);
            });

            Assert.Equal(ex.Message, ConstantesDeValidacao.O_NOME_DO_ELEMENTO_DEVE_SER_INFORMADO);
        }
示例#20
0
        public void TesteCadastroPadrao()
        {
            var servico = FabricaDeServico.Crie <UnidadeDeTeste>();

            var unidadeDeTeste     = ObtenhaElementoPadrao();
            var codigo             = servico.Cadastre(unidadeDeTeste);
            var elementoCadastrado = servico.Consulte(codigo);

            Assert.NotEqual(codigo, 0);
            Assert.NotNull(elementoCadastrado);
            Assert.Equal(elementoCadastrado.Nome, "Nome da unidade de teste");

            servico.Remova(codigo);
        }
示例#21
0
        public void TesteCadastroComNumeroErro(int value)
        {
            var servico        = FabricaDeServico.Crie <UnidadeDeTeste>();
            var unidadeDeTeste = ObtenhaElementoPadrao();

            unidadeDeTeste.Numero = value;

            var ex = Assert.Throws <Exception>(() =>
            {
                servico.Cadastre(unidadeDeTeste);
            });

            Assert.Equal(ex.Message, O_NUMERO_DEVE_SEM_MAIOR_QUE_17_E_MENOR_QUE_80);
        }
示例#22
0
        public void CadastroSemValorErroTeste()
        {
            Produto produto = ObterModelProduto();

            produto.Valor = 0;

            var servico = FabricaDeServico.Crie <Produto>();

            var ex = Assert.Throws <Exception>(() => {
                servico.Cadastre(produto);
            });


            Assert.Equal(ConstantesDeValidacaoDoModel.VALOR_PRODUTO_OBRIGATORIO, ex.Message);
        }
示例#23
0
        public void CadastroSemNomeErroTeste()
        {
            Produto produto = ObterModelProduto();

            produto.Nome = String.Empty;


            var servico = FabricaDeServico.Crie <Produto>();

            var ex = Assert.Throws <Exception>(() => {
                servico.Cadastre(produto);
            });


            Assert.Equal(ex.Message, ConstantesDeValidacao.O_NOME_DO_ELEMENTO_DEVE_SER_INFORMADO);
        }
示例#24
0
        public void TesteCadastreCustomizado()
        {
            var servico = FabricaDeServico.Crie <UnidadeDeTeste>() as ServicoDeUnidadeDeTeste;

            var unidadeDeTeste = ObtenhaElementoPadrao();
            var codigo         = servico.CadastreCustomizado(unidadeDeTeste);

            Assert.NotEqual(codigo, 0);

            var elementoCadastrado = servico.Consulte(codigo);

            Assert.NotNull(elementoCadastrado);
            Assert.Equal(elementoCadastrado.Descricao, "Descrição de teste - Servico-Repositório");

            servico.Remova(codigo);
        }
示例#25
0
        public virtual DnServicoBase ObterDependenciaDeServico <TS>(string identificadorDaSessao) where TS : DnServicoBase, new()
        {
            var identificadorDaSessaoGuid = Guid.Parse(identificadorDaSessao);

            SessaoDaRequisicao = Setup.ObterSessaoDeUmaRequisicao(identificadorDaSessaoGuid);

            if (SessaoDaRequisicao.Servicos.TryGetValue(typeof(TS), out var ser))
            {
                return(ser as TS);
            }

            var servico = FabricaDeServico.CriarServicoEmTempoReal(typeof(TS), identificadorDaSessaoGuid) as TS;

            SessaoDaRequisicao.Servicos.Add(typeof(TS), servico);
            return(servico);
        }
示例#26
0
        public void AtualizarSemValorErroTeste()
        {
            Produto produto = CadastrarProduto();

            produto.Valor = 0;

            var servico = FabricaDeServico.Crie <Produto>();

            var ex = Assert.Throws <Exception>(() => {
                servico.Atualize(produto);
            });


            Assert.Equal(ConstantesDeValidacaoDoModel.VALOR_PRODUTO_OBRIGATORIO, ex.Message);

            servico.Remova(produto.Codigo);
        }
示例#27
0
        public void AtualizarSemNomeErroTeste()
        {
            Produto produto = CadastrarProduto();

            produto.Nome = String.Empty;


            var servico = FabricaDeServico.Crie <Produto>();

            var ex = Assert.Throws <Exception>(() => {
                servico.Atualize(produto);
            });


            Assert.Equal(ex.Message, ConstantesDeValidacao.O_NOME_DO_ELEMENTO_DEVE_SER_INFORMADO);

            servico.Remova(produto.Codigo);
        }
示例#28
0
        public void TesteConsultaPadrao()
        {
            var servico = FabricaDeServico.Crie <UnidadeDeTeste>();

            var unidadeDeTeste     = ObtenhaElementoPadrao();
            var codigo             = servico.Cadastre(unidadeDeTeste);
            var elementoCadastrado = servico.Consulte(codigo);

            Assert.NotEqual(codigo, 0);
            Assert.NotNull(elementoCadastrado);

            var consultado = servico.Consulte(codigo);

            var igual = Compare(unidadeDeTeste, consultado, nameof(UnidadeDeTeste.Codigo), nameof(UnidadeDeTeste.DataDeAtualizacao), nameof(UnidadeDeTeste.DataDeCadastro));

            Assert.Equal(igual, true);

            servico.Remova(codigo);
        }
        public static void RemovaUmaVenda(int codigo)
        {
            var servico = FabricaDeServico.Crie <Venda>();

            servico.Remova(codigo);
        }
示例#30
0
        public static void RemovaUmProduto(int codigo)
        {
            var servico = FabricaDeServico.Crie <Produto>();

            servico.Remova(codigo);
        }