Esempio n. 1
0
 public static void ReceberMensagem(MensagemAlteracaoPrecosProdutos msg)
 {
     Console.WriteLine($"Recebidas solicitações para alterações nos preços de {msg.PrecosProdutosAlterados.Count} produtos:");
     foreach (var precoAlterado in msg.PrecosProdutosAlterados)
     {
         Console.WriteLine($"    Produto: {precoAlterado.Key}; Valor: {precoAlterado.Value}");
         AdicionarProdutosParaAtualizar(precoAlterado.Key, precoAlterado.Value);
     }
 }
Esempio n. 2
0
        public static void VerificarMudancas(object sender, ElapsedEventArgs e)
        {
            _timerVerificacaoMudancas.Stop();
            try
            {
                var precosProdutosAlterados = new Dictionary <string, string>();
                var lojasNotificacao        = new List <int>();

                using (var conn = new SqlConnection(Config.MSSQL_ConnectionString))
                {
                    conn.Open();
                    using (var cmd = new SqlCommand("select NomeProduto, ValorProduto from Produtos where DataUltimaAlteracao >= @dataUltimaAlteracao", conn))
                    {
                        cmd.Parameters.Add(new SqlParameter("dataUltimaAlteracao", _dataUltimaAlteracao));
                        using (var reader = cmd.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                                precosProdutosAlterados.Add(reader.GetString(0), reader.GetString(1));
                            }
                        }
                    }

                    using (var cmd = new SqlCommand("select LojaId from Lojas", conn))
                    {
                        using (var reader = cmd.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                                lojasNotificacao.Add(reader.GetInt32(0));
                            }
                        }
                    }
                }

                if (precosProdutosAlterados.Any() && lojasNotificacao.Any())
                {
                    Console.WriteLine($"{DateTime.Now} - Enviando notificação de alteração para as Lojas...");
                    Parallel.ForEach(lojasNotificacao, idLoja =>
                    {
                        var msg = new MensagemAlteracaoPrecosProdutos()
                        {
                            PrecosProdutosAlterados = precosProdutosAlterados
                        };
                        _bus.SendAsync($"Loja.{idLoja}", msg);
                    });
                    Console.WriteLine($"{DateTime.Now} - Concluído.");
                    _dataUltimaAlteracao = DateTime.Now.AddHours(3);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            _timerVerificacaoMudancas.Start();
        }