public async Task <IActionResult> CriarPedido([FromBody] CriacaoPedidoDTO pedido) { var ret = await facade.CriarPedidoAsync(pedido); if (ret.Sucesso) { return(Ok(ret.Id)); } else { return(BadRequest(ret.Mensagem)); } }
public async Task <RetornoCriarPedido> CriarPedidoAsync(CriacaoPedidoDTO criacaoPedidoDTO) { try { if (criacaoPedidoDTO == null) { return new RetornoCriarPedido() { Sucesso = false, Mensagem = "criacaoPedidoDTO nulo." } } ; if (criacaoPedidoDTO.Cliente == null) { return new RetornoCriarPedido() { Sucesso = false, Mensagem = "criacaoPedidoDTO.Cliente nulo." } } ; if (criacaoPedidoDTO.Itens == null || !criacaoPedidoDTO.Itens.Any()) { return new RetornoCriarPedido() { Sucesso = false, Mensagem = "criacaoPedidoDTO.Itens nulo ou vazio." } } ; var cliente = await repositorioCliente.BuscarClienteAsync(criacaoPedidoDTO.Cliente.Id, criacaoPedidoDTO.Cliente.Versao); List <Item> itens = new List <Item>(); foreach (var itemDTO in criacaoPedidoDTO.Itens) { var item = await repositorioItem.BuscarItemAsync(itemDTO.Id, itemDTO.Versao); if (item == null) { return new RetornoCriarPedido() { Sucesso = false, Mensagem = $"Item inválido ou não encontrado. Id {itemDTO.Id}" } } ; itens.Add(item); } var pedido = FabricaPedido.CriarPedido(cliente, itens); string mensagemValidacao; if (!pedido.EValidoParaCriar(out mensagemValidacao)) { return new RetornoCriarPedido() { Sucesso = false, Mensagem = mensagemValidacao } } ; await repositorioPedido.CriarPedidoAsync(pedido); servicoMensageria.GuardarCopia(pedido); return(new RetornoCriarPedido() { Sucesso = true, Id = pedido.Id }); } catch (Exception ex) { logger.LogError(ex, "Erro.", criacaoPedidoDTO); return(new RetornoCriarPedido() { Sucesso = false, Mensagem = MENSAGEM_ERRO_GERNERICO }); } }