public static CashOutAttemptEntity Create <T>(ICashOutRequest request, PaymentSystem paymentSystem,
                                                          T paymentFields, CashOutRequestTradeSystem tradeSystem)
            {
                var entity = CreateEntity(request, paymentSystem, paymentFields, tradeSystem);

                entity.PartitionKey = GeneratePartition();

                return(entity);
            }
        public async Task <string> InsertRequestAsync <T>(ICashOutRequest request, PaymentSystem paymentSystem, T paymentFields, CashOutRequestTradeSystem tradeSystem)
        {
            var entity = CashOutAttemptEntity.PendingRecords.Create(request, paymentSystem, paymentFields, tradeSystem);
            await _tableStorage.InsertAsync(entity);

            return(entity.RowKey);
        }
        public static CashOutAttemptEntity CreateEntity <T>(ICashOutRequest request, PaymentSystem paymentSystem, T paymentFields, CashOutRequestTradeSystem tradeSystem)
        {
            var dt = DateTime.UtcNow;

            return(new CashOutAttemptEntity
            {
                AssetId = request.AssetId,
                Amount = request.Amount,
                ClientId = request.ClientId,
                PaymentSystem = paymentSystem,
                PaymentFields = paymentFields.ToJson(),
                DateTime = dt,
                State = request.State,
                TradeSystem = tradeSystem.ToString(),
                AccountId = request.AccountId,
                VolumeSize = request.VolumeSize
            });
        }
            public static CashOutAttemptEntity Create <T>(ICashOutRequest request, PaymentSystem paymentSystem, T paymentFields, CashOutRequestTradeSystem tradeSystem)
            {
                var reqId  = Guid.NewGuid().ToString("N");
                var entity = CreateEntity(request, paymentSystem, paymentFields, tradeSystem);

                entity.PartitionKey = GeneratePartition(request.ClientId);
                entity.RowKey       = GenerateRowKey(reqId);
                entity.Status       = request.Status;

                return(entity);
            }