Exemplo n.º 1
0
        private void SalvarItens(IEnumerable <ComandaItemDto> itens, AdicionarVendaItemRequest vendaItemRequest)
        {
            if (vendaItemRequest.VendaId == 0)
            {
                InserirVenda(itens);
            }

            var itensAtualizar = new List <VendaItem>();

            foreach (var item in itens.Where(i => i.State == Tracking.Modified))
            {
                itensAtualizar.Add(VendaItem.Novo(item));
            }

            var itensInserir = new List <VendaItem>();

            foreach (var item in itens.Where(i => i.State == Tracking.Inserted))
            {
                var vendaItem = VendaItem.Novo(item);
                itensInserir.Add(vendaItem);
                item.VendaItemId = vendaItem.Id;
            }

            vendaItemRepository.Salvar(itensInserir, itensAtualizar);
            unitOfWork.Commit();

            PreencherVendaItemIds(itens, itensInserir);
        }
Exemplo n.º 2
0
        public AdicionarVendaItemResponse AdicionarItem(AdicionarVendaItemRequest vendaItemRequest)
        {
            if (!ValidarRequest(vendaItemRequest))
            {
                return(null);
            }

            var comandaItens = ListarComandaItens(vendaItemRequest);

            if (vendaRegras.Limites.Analisar(comandaItens))
            {
                AdicionarNotificacoes(vendaRegras.Limites.ListarMensagens());
                return(null);
            }

            vendaRegras.Descontos.Aplicar(comandaItens);
            vendaRegras.Brindes.Adicionar(comandaItens);

            SalvarItens(comandaItens, vendaItemRequest);

            return(new AdicionarVendaItemResponse
            {
                VendaId = comandaItens.First().VendaId,
                Brindes = comandaItens.Where(i => i.Brinde && i.State == Tracking.Inserted)
            });
        }
Exemplo n.º 3
0
 public void Atualizar(AdicionarVendaItemRequest request, Produto produto)
 {
     ProdutoDescricao = produto.Descricao;
     ProdutoPreco     = produto.Preco;
     Quantidade      += request.Quantidade;
     State            = Tracking.Modified;
 }
Exemplo n.º 4
0
        public int AdicionarItem(AdicionarVendaItemRequest vendaItemRequest)
        {
            if (!ValidarRequest(vendaItemRequest))
            {
                return(0);
            }

            var vendaItem = new VendaItem(vendaItemRequest.VendaId, vendaItemRequest.ProdutoId, string.Empty, vendaItemRequest.Preco, vendaItemRequest.Desconto);

            return(vendaService.AdicionarItem(vendaItem));
        }
Exemplo n.º 5
0
 public static ComandaItemDto Novo(AdicionarVendaItemRequest request, Produto produto)
 {
     return(new ComandaItemDto
     {
         VendaId = request.VendaId,
         Quantidade = request.Quantidade,
         ProdutoDescricao = produto.Descricao,
         ProdutoId = produto.Id,
         ProdutoPreco = produto.Preco,
         ProdutoTipo = produto.Tipo,
         State = Tracking.Inserted
     });
 }
Exemplo n.º 6
0
        private IList <ComandaItemDto> ListarComandaItens(AdicionarVendaItemRequest vendaItemRequest)
        {
            var comandaItens = vendaItemRepository.ListarComandaItens(vendaItemRequest.VendaId).ToList();

            var produto       = produtoRepository.ObterPorId(vendaItemRequest.ProdutoId);
            var itemExistente = comandaItens.FirstOrDefault(i => i.ProdutoId == vendaItemRequest.ProdutoId);

            if (itemExistente == null)
            {
                comandaItens.Add(ComandaItemDto.Novo(vendaItemRequest, produto));
            }
            else
            {
                itemExistente.Atualizar(vendaItemRequest, produto);
            }

            return(comandaItens);
        }
Exemplo n.º 7
0
        public IActionResult RegistrarItem(AdicionarVendaItemRequest adicionarVendaItemRequest)
        {
            var retorno = service.AdicionarItem(adicionarVendaItemRequest);

            return(Response(retorno));
        }