public async Task <ActionResult <Produto> > PostVenda(int produtoId) { try { var produto = await _db.Produtos.FindAsync(produtoId); if (produto == null) { return(NotFound()); } // Atualiza produto em vendas service produto.Quantidade -= 1; _db.Entry(produto).State = EntityState.Modified; // Envia mensagem para fila do service bus await _serviceBusMessageSender.SendProdutoVendidoMessage(produto); // Salva produto em venda service await _db.SaveChangesAsync(); return(StatusCode(201, produto)); } catch (DbUpdateException ex) { return(StatusCode(500, new { title = "Erro ao atualizar banco de dados", message = ex.Message })); } catch (Exception) { throw; } }
private async Task ProcessProdutoAtualizadoQueue(Message message) { var options = new DbContextOptions <VendaServiceContext>(); using (var _db = new VendaServiceContext(options)) { try { var produto = JsonConvert.DeserializeObject <Produto>(Encoding.UTF8.GetString(message.Body)); _db.Entry(produto).State = EntityState.Modified; await _db.SaveChangesAsync(); _logger.LogInformation($"Produto atualizado - QueueName: {QueueName}"); } catch (System.Exception) { throw; } } }