public async Task MoedaCotacao(IDialogContext context, LuisResult result) { var message = string.Empty; var service = new CotacaoMoeda(); try { var moeda = result.Entities.FirstOrDefault(x => x.Type.Equals("Moeda")); message = "Cotações:\n\n"; var list = await service.Cotacao(moeda?.Entity ?? string.Empty); foreach (var cotacao in list) { var dataAtualizacao = TimeZoneInfo.ConvertTime(new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc).AddSeconds(cotacao.ultima_consulta), TimeZoneInfo.FindSystemTimeZoneById("E. South America Standard Time")); message += $"**{cotacao.nome}**: R$ {cotacao.valor.ToString("N4")}\n\n"; message += $"Data: {dataAtualizacao.ToString("dd/MM/yyyy HH:mm:ss")} | Fonte: {cotacao.fonte}\n\n"; } } catch (Exception ex) { message = "Desculpe, não consegui buscar essa informação no momento. Se importa de tentar novamente?"; } await context.PostAsync(message); context.Wait(MessageReceived); }
public async Task MoedaCotacao(IDialogContext context, LuisResult result) { var service = new CotacaoMoeda(); var moeda = result.Entities.FirstOrDefault(x => x.Type.Equals("Moeda")); await context.PostAsync("Cotações:"); var list = await service.Cotacao(moeda?.Entity ?? string.Empty); foreach (var cotacao in list) { var dataAtualizacao = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc).AddSeconds(cotacao.ultima_consulta).ToLocalTime(); await context.PostAsync($"{cotacao.nome}: R$ {cotacao.valor.ToString("N4")}"); await context.PostAsync($"Data: {dataAtualizacao} | Fonte: {cotacao.fonte}"); } context.Wait(MessageReceived); }
private async Task <DialogTurnResult> CotacaoStepAsync(WaterfallStepContext stepContext, CancellationToken cancellationToken) { var LUISResponse = (LUISResponse)stepContext.Options; if (string.IsNullOrWhiteSpace(LUISResponse.Entidade)) { return(await stepContext.PromptAsync(nameof(TextPrompt), new PromptOptions { Prompt = MessageFactory.Text("Ops, não entendi qual moeda você deseja cotar, poderia repetir?") }, cancellationToken)); } string mensagem = string.Empty; var servico = new CotacaoMoeda(); try { var cotacoesSolicitadas = await servico.Cotacao(LUISResponse.Entidade); mensagem = cotacoesSolicitadas.Count > 1 ? "Cotações" : "Cotação"; mensagem += ":\n\n"; foreach (var cotacao in cotacoesSolicitadas) { //var dataAtualizacao = TimeZoneInfo.ConvertTime(new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc).AddSeconds(Double.Parse(cotacao.timestamp)), TimeZoneInfo.FindSystemTimeZoneById("E. South America Standard Time")); mensagem += $"**{cotacao.name} ({cotacao.code})**: \n" + $"Valor de Compra R$ {cotacao.bid} \n" + $"Valor de Venda R$ {cotacao.ask} \n" + $"Variação R$ {cotacao.varBid} \n" + $"Porcentagem da Variação R$ {cotacao.pctChange} \n" + $"Máximo R$ {cotacao.high} \n" + $"Mínimo R$ {cotacao.low} \n"; //mensagem += $"Data: {dataAtualizacao.ToString("dd/MM/yyyy HH:mm:ss")}\n\n"; } } catch (Exception ex) { mensagem = "Desculpe, não consegui buscar essa informação no momento. Se importa de tentar novamente?"; } return(await stepContext.NextAsync(mensagem, cancellationToken)); }