public async Task Process(BatchProcess data) { var messages = data.Messages.Select(m => mapper.Map <Message>(m)); var transfers = data.Transfers.Select(t => mapper.Map <Transfer>(t)); var request = new ProcessBatchRequest { ProcessingTimestamp = data.ProcessingTimestamp.ToNullableTimestamp(), ProcessedPaymentsIds = { data.ProcessedPaymentsIds }, Transfers = { transfers }, Messages = { messages }, RepaidInstalmentsIds = { data.RepaidInstalmentsIds } }; await batchesBranchClient.ProcessAsync(request, HttpContext.CreateHeadersWithFlowId()); }
public override async Task <Empty> Process(ProcessBatchRequest request, ServerCallContext context) { var tasks = new List <Task>(); if (request.Messages.Count > 0) { tasks.Add(Task.Run(async() => await usersClient.BatchAddMessagesAsync(new BatchAddMessagesRequest { Messages = { request.Messages } }, context.RequestHeaders.SelectCustom()))); } if (request.Transfers.Count > 0) { tasks.Add(Task.Run(async() => await accountsClient.BatchTransferAsync(new BatchTransferRequest { Transfers = { request.Transfers } }, context.RequestHeaders.SelectCustom()))); } if (request.ProcessedPaymentsIds.Count > 0) { tasks.Add(Task.Run(async() => await paymentsClient.UpdateLatestProcessingTimestampAsync(new UpdateLatestProcessingTimestampRequest { Ids = { request.ProcessedPaymentsIds }, LatestProcessingTimestamp = request.ProcessingTimestamp }, context.RequestHeaders.SelectCustom()))); } if (request.RepaidInstalmentsIds.Count > 0) { tasks.Add(Task.Run(async() => await loansClient.BatchRepayInstalmentsAsync(new BatchRepayInstalmentsRequest { Ids = { request.RepaidInstalmentsIds } }, context.RequestHeaders.SelectCustom()))); } if (tasks.Count > 0) { await Task.WhenAll(tasks.ToArray()); } return(new Empty()); }