Ejemplo n.º 1
0
        public async Task Registrar(Venda venda)
        {
            if (!venda.EhValido())
            {
                Notificar(venda.ValidationResult);
                return;
            }

            await _vendaRepository.Adicionar(venda);

            foreach (var produtoVenda in venda.VendasProdutos)
            {
                var produto = await ObterProduto(produtoVenda);

                if (!QuantidadeSuficienteNoEstoque(produtoVenda, produto))
                {
                    Notificar("Não há itens suficientes em estoque para concluir essa operação.");
                    return;
                }

                produtoVenda.GerarKardex(produto.Quantidade, produtoVenda.Quantidade);
                produto.DecrementarEstoque(produtoVenda.Quantidade);

                _produtoRepository.Atualizar(produto);
                await _vendaProdutoRepository.Adicionar(produtoVenda);
            }

            var cliente = await ObterClientePorId(venda.ClienteId);

            await GerarRegistroClienteCompra(cliente, venda);

            await _UoW.Commit();
        }
        public async Task Adicionar(Venda venda)
        {
            if (!ExecutarValidacao(new VendaValidation(), venda))
            {
                return;
            }
            if (_vendaRepository.Buscar(v => v.Id == venda.Id).Result.Any())
            {
                Notificar("Esta venda já foi cadastrada");
                return;
            }

            await _vendaRepository.Adicionar(venda);
        }
        public void CriarVendaRepositorioTeste()
        {
            // Criar venda
            Venda venda = new Venda(new DateTime(2000, 12, 30), new List <ItemVenda>());

            // Adicionar ao banco
            _repositorio.Adicionar(venda);

            // Buscar no banco
            Venda novaVenda = _contextoTeste.Venda.Find(venda.Id); //.Include(itv => itv.Produto).Where(itv => itv.Id == itemVenda.Id).FirstOrDefault();

            // Assert
            Assert.IsTrue(novaVenda.Id > 0);
            Assert.AreEqual(novaVenda.Data, new DateTime(2000, 12, 30));
        }
        public async Task Adicionar(Venda venda)
        {
            //Verifica se existe uma Venda cadastrada com o mesmo Id
            if (!ExecutarValidacao(new VendaValidation(), venda))
            {
                return;
            }
            //Ver se realmente é necessário
            if (_vendaRepository.Buscar(v => v.Id == venda.Id).Result.Any())
            {
                Notificar("Esta venda já foi cadastrada");
                return;
            }

            await _vendaRepository.Adicionar(venda);
        }
Ejemplo n.º 5
0
        public Venda Adicionar(Venda venda)
        {
            if (!venda.EhValido())
            {
                return(venda);
            }

            venda.ValidationResult = new VendaCadastroOkValidation(_estoqueRepository, _vendaRepository).Validate(venda);

            if (venda.ValidationResult.IsValid)
            {
                venda.DataVenda = DateTime.Now;
            }
            _vendaRepository.Adicionar(venda);
            _estoqueService.RemoverQuantidadeProdutoEstoque(venda.ProdutoId, (int)venda.Quantidade);

            return(venda);
        }
Ejemplo n.º 6
0
        public async Task <ActionResult <VendaViewModel> > AdicionarVenda(VendaViewModel vendaViewModel)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var venda = await _vendaRepository.ObterPorId(vendaViewModel.Id);

            if (venda != null)
            {
                return(BadRequest("Venda já Cadastrada. Informe um ID único, por favor!!"));
            }

            //if (!ValidarDados(vendaViewModel)) return BadRequest("Há infromações erradas na venda. Confira os IDs do carro, vendedor, cliente");
            var carro = await _carroRepository.ObterPorId(vendaViewModel.CarroId);

            if (carro == null)
            {
                return(BadRequest("Id do Carro não é válido"));
            }

            var vendedor = await _vendedorRepository.ObterPorId(vendaViewModel.VendedorId);

            if (vendedor == null)
            {
                return(BadRequest("Id do Vendedor não é válido"));
            }

            var cliente = await _clienteRepository.ObterPorId(vendaViewModel.ClienteId);

            if (cliente == null)
            {
                return(BadRequest("Id do Cliente não é válido"));
            }

            await _vendaRepository.Adicionar(_mapper.Map <Venda>(vendaViewModel));

            return(Ok(vendaViewModel));
        }
Ejemplo n.º 7
0
        public async Task <Venda> Adicionar(Venda venda)
        {
            if (venda == null)
            {
                return(null);
            }

            if (venda.ProdutoId == Guid.Empty)
            {
                Notificar("Venda sem produto relacionado.");
            }
            else if ((await __vendaRepository.Buscar(x => x.ProdutoId == venda.ProdutoId)).Count() > 0)
            {
                Notificar("Produto Já Foi Vendido.");
            }
            else
            {
                venda.EmailComprador = venda.EmailComprador ?? _user.GetUserEmail();
                venda.Data           = DateTime.Now;

                await __vendaRepository.Adicionar(venda);
            }
            return(await __vendaRepository.ObterVendaProduto(venda.Id));
        }
Ejemplo n.º 8
0
        public void Adicionar(Venda venda)
        {
            venda.Valida();

            _vendaRepository.Adicionar(venda);
        }
Ejemplo n.º 9
0
 public Venda CriarVenda(Venda venda)
 {
     return(_repositorio.Adicionar(venda));
 }
Ejemplo n.º 10
0
 public Venda Adiciona(Venda venda)
 {
     venda.Validate();
     return(_vendaRepository.Adicionar(venda));
 }