public async Task <Usuario> BuscarPorId(int Id) { try { var usuario = await repository.BuscarPorId(Id); if (usuario == null) { throw new Exception("Usuário não encontrado."); } return(usuario); } catch (Exception e) { throw e; } }
public async Task <Pedido> Gravar(PedidoDto pedidoDto) { try { var pedido = new Pedido(); var itens = new List <ItemPedido>(); foreach (ItemPedidoDto item in pedidoDto.Itens) { var itemPedido = new ItemPedido { IdProduto1 = item.IdProduto1, IdProduto2 = item.IdProduto2, }; pedido.Itens.Add(itemPedido); } if (pedidoDto.IdUsuario.HasValue) { pedido.Usuario = await usuarioRepo.BuscarPorId(pedidoDto.IdUsuario.Value); } if (pedido.Usuario != null) { pedido.Endereco = new Endereco { Logradouro = pedido.Usuario.Endereco.Logradouro, Complemento = pedido.Usuario.Endereco.Complemento, Numero = pedido.Usuario.Endereco.Numero }; } else if (pedidoDto.enderecoDto != null) { pedido.Endereco = new Endereco { Logradouro = pedidoDto.enderecoDto.Logradouro, Complemento = pedidoDto.enderecoDto.Complemento, Numero = pedidoDto.enderecoDto.Numero } } ; //pedido.Itens.AddRange(itens); pedido.IsValid(); foreach (ItemPedido item in pedido.Itens) { item.Produto1 = await produtoRepo.BuscarPorId(item.IdProduto1); item.Produto2 = await produtoRepo.BuscarPorId(item.IdProduto2); item.Nome = string.Format("{0}{1}", item.Produto1.Nome, item.Produto2 != null ? " X " + item.Produto2.Nome : ""); pedido.Valor += Math.Round(item.Total, 2); } pedido.Data = DateTime.Now; pedido.Valor = Math.Round(pedido.Valor, 2); return(await repository.Gravar(pedido)); } catch (Exception e) { throw e; } }