Пример #1
0
        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());
        }