BatchAdjustResponse ICommonGameActionsProvider.BatchAdjust(BatchAdjust request)
        {
            var errorCode        = GameApiErrorCode.NoError;
            var errorDescription = (string)null;
            var errorsList       = new ConcurrentBag <BatchCommandTransactionError>();
            var txCount          = 0;

            try
            {
                txCount = request.Transactions.Count;

                request.Transactions.AsParallel().ForAll(transaction =>
                {
                    try
                    {
                        AdjustTransaction(transaction, request.BatchId);
                    }
                    catch (Exception ex)
                    {
                        errorsList.Add(CreateBatchTransactionError(ex, transaction.Id, transaction.UserId));
                    }
                });
            }
            catch (Exception ex)
            {
                errorCode = _errors.GetErrorCodeByException(ex, out errorDescription);
            }

            return(new BatchAdjustResponse
            {
                BatchId = request.BatchId,
                TransactionCount = txCount,
                BatchTimestamp = DateTimeOffset.UtcNow.ToString("O"),
                Errors = errorsList.ToList(),
                ErrorCode = errorCode,
                ErrorDescription = errorDescription
            });
        }
 public BatchAdjustResponse Post(BatchAdjust request)
 {
     return(GameActions.BatchAdjust(request));
 }