public async Task <SubItem> Handle(CreateSubItem request, CancellationToken cancellationToken) { var item = await _listItems.FindToDoListItemByIdAsync(request.ListItemId); var subItem = item.CreateSubItem(request.Name); subItem.Id = _subItems.NextId(); _subItems.Add(subItem); await _subItems.SaveChangesAsync(); return(subItem); }
public ActionResult <Pedido> Cadastrar(Pedido model) { try { if (model.Itens == null || model.Itens.Count == 0 || model.Itens.Count > 10) { return(BadRequest("Um pedido pode ter no mínimo uma pizza e no máximo 10.")); } if (model.CodCliente != 0) { var endereco = _clienteRepository.Get(model.CodCliente); if (endereco != null) { model.Bairro_Entrega = endereco.Bairro; model.Cidade_Entrega = endereco.Cidade; model.Complemento_Entrega = endereco.Complemento; model.Estado_Entrega = endereco.Estado; model.Logradouro_Entrega = endereco.Logradouro; model.Numero_Entrega = endereco.Numero; model.NomeCliente = endereco.Nome; model.Email = endereco.Email; model.Telefone = endereco.Telefone; } else { return(BadRequest("O cliente informado, não foi encontrado;")); } } #region calcula Preço decimal valorTotal = 0; foreach (var item in model.Itens) { if (item.Pizza == null || item.Pizza.Count == 0) { return(BadRequest("Nenhuma pizza foi adicionada!")); } if (item.Pizza.Count > 2) { return(BadRequest("Cada pizza deve ter no mínimo dois sabores!")); } foreach (var subItem in item.Pizza) { var pizza = _pizzaRepository.Get(subItem.CodPizza); subItem.Nome = pizza.Nome; if (item.Pizza.Count == 1) { valorTotal += pizza.Preco; subItem.Preco = pizza.Preco; } else { var valorItem = (pizza.Preco / 2); valorTotal += valorItem; subItem.Preco = valorItem; } } } model.PrecoTotal = valorTotal; #endregion model.CodPedido = _pedidoRepository.Add(model).CodPedido; foreach (var item in model.Itens) { item.CodPedido = model.CodPedido; item.CodPedidoItem = _pedidoItemRepository.Add(item).CodPedidoItem; foreach (var subItem in item.Pizza) { subItem.CodPedidoItem = item.CodPedidoItem; subItem.CodSubItem = _subItemRepository.Add(subItem).CodSubItem; } } return(Ok(model)); } catch (Exception e) { return(BadRequest()); } }