예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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));
        }