Beispiel #1
0
 public override async Task<GetTransactionsResponse> GetTransactions(GetTransactionsRequest request, ServerCallContext context)
 {
     var ids = request.Ids.Any() ? request.Ids.ToArray() : cardsRepository.GetIds();
     var transactionsRequest = new FilterTransactionsRequest { Cards = { ids }, TimestampFrom = request.TimestampFrom, TimestampTo = request.TimestampTo };
     var transactionsResponse = await transactionsClient.FilterAsync(transactionsRequest, context.RequestHeaders.SelectCustom());
     return new GetTransactionsResponse { Transactions = { transactionsResponse.Transactions } };
 }
        public async Task <Transaction[]> GetTransactions(Metadata headers, Timestamp from, Timestamp to)
        {
            var request = new TransactionsMicroservice.FilterTransactionsRequest {
                TimestampFrom = from, TimestampTo = to
            };
            var response = await transactionsClient.FilterAsync(request, headers);

            return(response.Transactions.ToArray());
        }
        public override async Task <GetPanelResponse> Get(GetPanelRequest request, ServerCallContext context)
        {
            RepeatedField <Loan>        loans        = new RepeatedField <Loan>();
            RepeatedField <Payment>     payments     = new RepeatedField <Payment>();
            RepeatedField <Account>     accounts     = new RepeatedField <Account>();
            RepeatedField <Card>        cards        = new RepeatedField <Card>();
            RepeatedField <Transaction> transactions = new RepeatedField <Transaction>();

            var accountsResponse = await accountsClient.GetUserAccountsAsync(new GetUserAccountsRequest { UserId = request.UserId }, context.RequestHeaders.SelectCustom());

            var accountsIds = accountsResponse.Accounts.Select(a => a.Id).ToArray();

            accounts = accountsResponse.Accounts;

            if (accounts.Any())
            {
                var parallelTasks = new List <Task>();
                parallelTasks.Add(Task.Run(async() =>
                {
                    var transactionsResponse = await transactionsClient.FilterAsync(
                        new FilterTransactionsRequest {
                        Senders = { accountsIds }, Top = PanelTransactionsCount
                    }
                        , context.RequestHeaders.SelectCustom());
                }));

                parallelTasks.Add(Task.Run(async() =>
                {
                    var paymentsAndLoans = await paymentsClient.GetByAccountsAsync(new GetPaymentsRequest {
                        Ids = { accountsIds }
                    }, context.RequestHeaders.SelectCustom());
                    loans    = paymentsAndLoans.Loans;
                    payments = paymentsAndLoans.Payments;
                }));

                parallelTasks.Add(Task.Run(async() =>
                {
                    var cardsResponse = await cardsClient.GetByAccountsAsync(new GetCardsRequest {
                        Ids = { accountsIds }
                    }, context.RequestHeaders.SelectCustom());
                    cards = cardsResponse.Cards;
                }));


                await Task.WhenAll(parallelTasks);
            }

            return(new GetPanelResponse
            {
                Cards = { cards },
                Payments = { payments },
                Accounts = { accounts },
                Loans = { loans },
                Transactions = { transactions.OrderByDescending(t => t.Timestamp) }
            });
        }
Beispiel #4
0
        public override async Task <GetTransactionsResponse> GetTransactions(GetTransactionsRequest request, ServerCallContext context)
        {
            var filters = new FilterTransactionsRequest {
                Senders = { request.Ids }, Recipients = { request.Ids }, TimestampFrom = request.TimestampFrom, TimestampTo = request.TimestampTo
            };
            var response = await transactionsClient.FilterAsync(filters, context.RequestHeaders.SelectCustom());

            return(new GetTransactionsResponse {
                Transactions = { response.Transactions }
            });
        }