Ejemplo n.º 1
0
        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;
            }
        }
Ejemplo n.º 2
0
        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;
                }
            }
        }
Ejemplo n.º 3
0
        private async Task ProcessProdutoAdicionadoQueue(Message message)
        {
            var options = new DbContextOptions <VendaServiceContext>();

            using (var _db = new VendaServiceContext(options))
            {
                try
                {
                    var novoProduto = JsonConvert.DeserializeObject <Produto>(Encoding.UTF8.GetString(message.Body));
                    _db.Produtos.Add(novoProduto);
                    await _db.SaveChangesAsync();

                    _logger.LogInformation($"Novo produto criado - QueueName: {QueueName}");
                }
                catch (System.Exception)
                {
                    throw;
                }
            }
        }