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