private async Task PerformTransactionQuery(IDialogContext context, IAwaitable <object> result)
        {
            await context.PostAsync(PostTypingReply(context));


            var selection = await result;

            _selectedAccount = selection as Account ?? new Account();

            var queryResult = AccountDataController.GetTransactionsFromEntities(_selectedAccount, _entityProps);

            var reply = context.MakeMessage();

            reply.AttachmentLayout = AttachmentLayoutTypes.Carousel;
            reply.Attachments      = new List <Attachment>();

            foreach (var transaction in queryResult)
            {
                reply.Attachments.Add(
                    new ThumbnailCard()
                {
                    Title    = $"{transaction.Amount:C} {(transaction.TransactionType == "deposit" ? "Deposit" : "Payment")}",
                    Subtitle = $"{transaction.RecepientName}, {transaction.DateTime:d}",
                    Text     = transaction.Description
                }
                    .ToAttachment());

                if (reply.Attachments.Count >= 20)
                {
                    break;
                }
            }

            reply.Text = reply.Attachments.Count >= 20 ? "Showing first 20 results" : $"{reply.Attachments.Count} transactions found";

            //TODO: Show only 5-10 transactions at once and display 'Show more' button.

            await context.PostAsync(reply);

            context.Done(true);
        }
示例#2
0
        private async Task ResumeAfterConfirmationPrompt(IDialogContext context, IAwaitable <bool> result)
        {
            var proceed = await result;

            if (proceed)
            {
                UpdateEntityProps();

                AccountDataController.PerformInternalTransfer(_sourceAccount, _entityProps);

                var message    = context.MakeMessage();
                var attachment = GetReceiptCard();
                message.Attachments.Add(attachment);
                await context.PostAsync(message);

                context.Done(true);
            }
            else
            {
                context.Done(false);
            }
        }
 public AccountManager()
 {
     _accountDataController = new AccountDataController();
 }