public async Task ExtractAsync(IDialogContext context, LuisResult result) { var walletId = context.GetUserWalletId(); if (!walletId.HasValue) { await context.PostAsync("Você precisa cadastrar uma carteira para poder consultar o extrato"); context.Done(RootDialog.Error); return; } Transaction[] transactions = null; var dateEntity = result.Entities.FirstOrDefault(e => string.Equals(e.Type, DateTimeEntity)); if (dateEntity != null && dateEntity.Resolution.TryGetValue("values", out var values) && values is List <object> objects && objects.FirstOrDefault() is Dictionary <string, object> dictionary && dictionary.TryGetValue("start", out var start) && dictionary.TryGetValue("end", out var end)) { var fromDate = DateTime.Parse(start.ToString()); var toDate = DateTime.Parse(end.ToString()); await context.PostAsync($"Buscando transações que aconteceram entre {fromDate.ToString("dd/MM/yyy")} e {toDate.ToString("dd/MM/yyyy")}. Por favor, aguarde!"); transactions = await FinancialApi.Dispatcher.GetTransactionsAsync(walletId.Value, fromDate, toDate); }
private async Task <bool> EnsureUserRegistrationCompleted(IDialogContext context) { var id = context.GetUserId(); if (id.HasValue) { var user = await FinancialApi.Dispatcher.GetUserAsync(id.Value); if (user != null) { context.SetUserName(user.Name); var walletId = context.GetUserWalletId(); if (walletId.HasValue) { var wallet = await FinancialApi.Dispatcher.GetWalletAsync(walletId.Value); if (wallet != null) { return(true); } context.RemoveUserWalletId(); } var userWallets = await FinancialApi.Dispatcher.GetUserWalletsAsync(user.Id); var userWallet = userWallets.FirstOrDefault(); if (userWallet != null) { context.SetUserWalletId(userWallet.Id); return(true); } } } context.RemoveUserId(); context.RemoveUserName(); context.RemoveUserWalletId(); return(false); }
public async Task BalanceAsync(IDialogContext context, LuisResult result) { var walletId = context.GetUserWalletId(); if (walletId.HasValue) { var wallet = await FinancialApi.Dispatcher.GetWalletAsync(walletId.Value); if (wallet != null) { await context.PostAsync($"Saldo atual: R$ {wallet.CurrentBalance:0.00}"); context.Done(RootDialog.Ok); return; } } await context.PostAsync("Você precisa cadastrar uma carteira para poder consultar o seu saldo"); context.Done(RootDialog.Error); }