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); }
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) }); }
public void Atualizar(AdicionarVendaItemRequest request, Produto produto) { ProdutoDescricao = produto.Descricao; ProdutoPreco = produto.Preco; Quantidade += request.Quantidade; State = Tracking.Modified; }
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)); }
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 }); }
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); }
public IActionResult RegistrarItem(AdicionarVendaItemRequest adicionarVendaItemRequest) { var retorno = service.AdicionarItem(adicionarVendaItemRequest); return(Response(retorno)); }