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) } }); }
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 } }); }