public async Task <ICustomerChecksInfo> UpdateCheckStatesAsync(string clientId, bool?pep = null, bool?crime = null, bool?sanction = null)
        {
            var entity = CustomerChecksInfoEntity.Create(clientId, pep, crime, sanction);
            await _tableStorage.InsertOrMergeAsync(entity);

            return(entity);
        }
        public async Task SaveConnectionUrlHistoryAsync(
            string repositoryId,
            string ip,
            string userAgent)
        {
            var id       = Guid.NewGuid().ToString();
            var commonPk = new ConnectionUrlHistory
            {
                PartitionKey = ConnectionUrlHistory.GeneratePartitionKey(),
                RowKey       = id,
                RepositoryId = repositoryId,
                Ip           = ip,
                UserAgent    = userAgent,
            };
            var repoPk = new ConnectionUrlHistory
            {
                PartitionKey = repositoryId,
                RowKey       = id,
                RepositoryId = repositoryId,
                Ip           = ip,
                UserAgent    = userAgent,
            };

            var tasks = new List <Task>
            {
                _tableStorage.InsertOrMergeAsync(commonPk),
                _tableStorage.InsertOrMergeAsync(repoPk),
            };
            await Task.WhenAll(tasks);

            if (_totalCount.HasValue)
            {
                _totalCount = _totalCount.Value + 1;
            }
        }
예제 #3
0
        public async Task EditGroup(IAssetGroup assetGroup)
        {
            var entity = AssetGroupEntity.Record.Create(assetGroup);
            await _tableStorage.InsertOrMergeAsync(entity);

            var updatedGroup = await _tableStorage.GetDataAsync(AssetGroupEntity.Record.GeneratePartitionKey(),
                                                                AssetGroupEntity.Record.GenerateRowKey(assetGroup.Name));

            var clients = (await GetClientIdsForGroup(assetGroup.Name)).ToArray();

            if (clients.Any())
            {
                foreach (var clientId in clients)
                {
                    var clientGroupLink = await _tableStorage
                                          .GetDataAsync(AssetGroupEntity.ClientGroupLink.GeneratePartitionKey(updatedGroup.Name),
                                                        AssetGroupEntity.ClientGroupLink.GenerateRowKey(clientId));

                    AssetGroupEntity.ClientGroupLink.Update(clientGroupLink, updatedGroup);

                    var groupClientLink = await _tableStorage
                                          .GetDataAsync(AssetGroupEntity.GroupClientLink.GeneratePartitionKey(clientId),
                                                        AssetGroupEntity.GroupClientLink.GenerateRowKey(updatedGroup.Name));

                    AssetGroupEntity.GroupClientLink.Update(groupClientLink, updatedGroup);

                    await _tableStorage.InsertOrMergeAsync(clientGroupLink);

                    await _tableStorage.InsertOrMergeAsync(groupClientLink);
                }
            }
        }
        public async Task SaveKeyValueOverrideHistoryAsync(
            string keyValueId,
            string newOverride,
            string keyValues,
            string userName,
            string userIpAddress)
        {
            var datetime = DateTime.UtcNow.StorageString();
            var th       = new KeyValueHistory
            {
                PartitionKey  = keyValueId,
                RowKey        = datetime,
                DateTime      = datetime,
                KeyValueId    = keyValueId,
                NewOverride   = newOverride,
                UserName      = userName,
                UserIpAddress = userIpAddress
            };

            th.KeyValuesSnapshot = $"{th.UserName}_{th.RowKey}_{th.UserIpAddress}";

            await _blobStorage.SaveBlobAsync(_container, th.KeyValuesSnapshot, Encoding.UTF8.GetBytes(keyValues));

            await _tableStorage.InsertOrMergeAsync(th);
        }
예제 #5
0
        public async Task AssignDialogToClientAsync(string clientId, string dialogId)
        {
            var index       = CreateClientDialogIndex(clientId, dialogId);
            var dialogIndex = CreateDialogIndex(clientId, dialogId);

            var tasks = new List <Task>
            {
                _clientDialogIndex.InsertOrMergeAsync(index),
                _clientDialogIndex.InsertOrMergeAsync(dialogIndex)
            };

            await Task.WhenAll(tasks);
        }
예제 #6
0
 public async Task SetJsonPageLockAsync(string userEmail, string userName, string ipAddress)
 {
     var pk = LockEntity.GeneratePartitionKey();
     await _tableStorage.InsertOrMergeAsync(new LockEntity
     {
         PartitionKey = pk,
         RowKey       = JsonLockKey,
         UserEmail    = userEmail,
         DateTime     = DateTime.UtcNow,
         UserName     = userName,
         IpAddress    = ipAddress,
         ETag         = "*"
     });
 }
예제 #7
0
        public async Task InsertOrMergeAsync(IFeedCandle candle, PriceType priceType, TimeInterval interval)
        {
            // Get candle table entity
            var partitionKey = CandleTableEntity.GeneratePartitionKey(priceType);
            var rowKey       = CandleTableEntity.GenerateRowKey(candle.DateTime, interval);

            var entity = await _tableStorage.GetDataAsync(partitionKey, rowKey) ??
                         new CandleTableEntity(partitionKey, rowKey);

            // Merge candle
            entity.MergeCandle(candle, interval);

            // Update
            await _tableStorage.InsertOrMergeAsync(entity);
        }
예제 #8
0
 public async Task CreateInitialAdminAsync(string defaultUserEmail, string defaultUserPasswordHash)
 {
     var usr = new UserEntity
     {
         PartitionKey = UserEntity.GeneratePartitionKey(),
         RowKey       = defaultUserEmail,
         Email        = defaultUserEmail,
         PasswordHash = defaultUserPasswordHash,
         FirstName    = "Admin",
         LastName     = "Initial",
         Active       = true,
         Admin        = true
     };
     await _tableStorage.InsertOrMergeAsync(usr);
 }
        public async Task <ITextResource> AddAsync(string lang, string name, string value)
        {
            var entity = TextResourceEntity.Create(lang, name, value);
            await _tableStorage.InsertOrMergeAsync(entity);

            return(entity);
        }
예제 #10
0
        public async Task <IAssetAvailabilityByMerchant> SetAsync(string paymentAssets, string settlementAssets, string merchantId)
        {
            string partitionKey = AssetAvailabilityByMerchantEntity.GeneratePartitionKey(merchantId);
            string rowKey       = AssetAvailabilityByMerchantEntity.GenerateRowKey(merchantId);

            AssetAvailabilityByMerchantEntity exItem = await _tableStorage.GetDataAsync(partitionKey, rowKey);

            if (exItem != null && string.IsNullOrEmpty(settlementAssets) && string.IsNullOrEmpty(paymentAssets))
            {
                await _tableStorage.DeleteAsync(exItem);

                return(null);
            }
            if (exItem != null)
            {
                exItem.PaymentAssets    = paymentAssets;
                exItem.SettlementAssets = settlementAssets;
                await _tableStorage.InsertOrMergeAsync(exItem);

                return(exItem);
            }
            var newItem = AssetAvailabilityByMerchantEntity.Create(new AssetAvailabilityByMerchant
            {
                MerchantId       = merchantId,
                PaymentAssets    = paymentAssets,
                SettlementAssets = settlementAssets
            });

            await _tableStorage.InsertAsync(newItem);

            return(newItem);
        }
예제 #11
0
        public async Task <bool> SaveAsync(IServiceTokenEntity token)
        {
            try
            {
                var pk     = ServiceTokenEntity.GeneratePartitionKey();
                var sToken = await _tableStorage.GetDataAsync(pk, token.RowKey);

                var sNewToken = (ServiceTokenEntity)token;
                if (sToken == null)
                {
                    sToken = new ServiceTokenEntity
                    {
                        PartitionKey = ServiceTokenEntity.GeneratePartitionKey(),
                        RowKey       = token.RowKey,
                        ETag         = token.ETag
                    };
                }
                sToken.SecurityKeyOne = sNewToken.SecurityKeyOne;
                sToken.SecurityKeyTwo = sNewToken.SecurityKeyTwo;
                await _tableStorage.InsertOrMergeAsync(sToken);
            }
            catch
            {
                return(false);
            }

            return(true);
        }
예제 #12
0
        public async Task <IGroupResource> AddAsync(IGroupResource resource)
        {
            var entity = GroupResourceEntity.Create(resource);
            await _tableStorage.InsertOrMergeAsync(entity);

            return(entity);
        }
        public Task UpdateEntity(string xApiKey, Order order)
        {
            var entity = LimitOrderEntity.ByOrder.Create(order, xApiKey);

            entity.Timestamp = DateTimeOffset.UtcNow;
            return(_storage.InsertOrMergeAsync(entity));
        }
        public async Task <bool> SaveUser(IUserEntity user)
        {
            try
            {
                var userEntity = await GetUserByUserEmail(user.Email);

                var te = (UserEntity)user;
                if (userEntity == null)
                {
                    te.RowKey = UserEntity.GenerateRowKey(te.Email);
                }
                else
                {
                    te.RowKey = userEntity.RowKey;
                }

                if (te.PartitionKey == null)
                {
                    te.PartitionKey = UserEntity.GeneratePartitionKey();
                }
                await _tableStorage.InsertOrMergeAsync(te);
            }


            catch (Exception e)
            {
                Console.WriteLine(e);
                return(false);
            }

            return(true);
        }
        public async Task SaveRepositoryUpdateHistory(IRepositoryUpdateHistory entity)
        {
            if (entity is RepositoryUpdateHistoryEntity ruh)
            {
                if (ruh.CreatedAt == null)
                {
                    ruh.CreatedAt = DateTimeOffset.UtcNow;
                }
                ruh.PartitionKey = RepositoryUpdateHistoryEntity.GeneratePartitionKey();
                ruh.RowKey       = entity.RepositoryId;
            }
            else
            {
                var pk = RepositoryUpdateHistoryEntity.GeneratePartitionKey();
                var rk = RepositoryUpdateHistoryEntity.GenerateRowKey(entity.RepositoryId);
                ruh = await _tableStorage.GetDataAsync(pk, rk)
                      ?? new RepositoryUpdateHistoryEntity
                {
                    PartitionKey = pk, RowKey = rk
                };

                ruh.RepositoryId  = entity.RepositoryId;
                ruh.InitialCommit = entity.InitialCommit;
                ruh.User          = entity.User;
                ruh.Branch        = entity.Branch;
                ruh.IsManual      = entity.IsManual;
                ruh.CreatedAt     = DateTime.UtcNow;
            }

            await _tableStorage.InsertOrMergeAsync(ruh);
        }
예제 #16
0
        public async Task <IClientDialog> AddDialogAsync(IClientDialog clientDialog)
        {
            var entity = ClientDialogEntity.Create(clientDialog);
            await _tableStorage.InsertOrMergeAsync(entity);

            return(entity);
        }
예제 #17
0
        public async Task <ILanguage> AddAsync(string code, string name)
        {
            var entity = LanguageEntity.Create(code, name);
            await _tableStorage.InsertOrMergeAsync(entity);

            return(entity);
        }
예제 #18
0
        public async Task <string> AddAsync(IQuestion question)
        {
            var entity = QuestionEntity.Create(question);
            await _tableStorage.InsertOrMergeAsync(entity);

            return(entity.Id);
        }
예제 #19
0
        public async Task SaveRepositoryAsync(IRepository repository)
        {
            if (repository is RepositoryEntity rs)
            {
                rs.PartitionKey = RepositoryEntity.GeneratePartitionKey();
                rs.RowKey       = repository.RepositoryId;
            }
            else
            {
                var pk = RepositoryEntity.GeneratePartitionKey();
                var rk = RepositoryEntity.GenerateRowKey(repository.RepositoryId);

                rs = await _tableStorage.GetDataAsync(pk, rk)
                     ?? new RepositoryEntity
                {
                    PartitionKey = pk, RowKey = rk
                };

                rs.Name              = repository.Name;
                rs.GitUrl            = repository.GitUrl;
                rs.Branch            = repository.Branch;
                rs.FileName          = repository.FileName;
                rs.UserName          = repository.UserName;
                rs.ConnectionUrl     = repository.ConnectionUrl;
                rs.UseManualSettings = repository.UseManualSettings;
                rs.Tag = repository.Tag;
            }

            await _tableStorage.InsertOrMergeAsync(rs);
        }
예제 #20
0
 public async Task SaveApplicationSettings(IApplicationSettingsEntity entity)
 {
     if (!(entity is ApplicationSettingsEntity se))
     {
         se = new ApplicationSettingsEntity
         {
             ETag                   = entity.ETag,
             AzureClientId          = entity.AzureClientId,
             AzureRegionName        = entity.AzureRegionName,
             AzureClientKey         = entity.AzureClientKey,
             AzureTenantId          = entity.AzureTenantId,
             AzureResourceGroupName = entity.AzureResourceGroupName,
             AzureStorageName       = entity.AzureStorageName,
             AzureKeyName           = entity.AzureKeyName,
             AzureSubscriptionId    = entity.AzureSubscriptionId,
             AzureApiKey            = entity.AzureApiKey,
             DefaultMongoDBConnStr  = entity.DefaultMongoDBConnStr,
             DefaultRabbitMQConnStr = entity.DefaultRabbitMQConnStr,
             DefaultRedisConnStr    = entity.DefaultRedisConnStr
         };
     }
     se.PartitionKey = ApplicationSettingsEntity.GeneratePartitionKey();
     se.RowKey       = entity.RowKey;
     await _tableStorage.InsertOrMergeAsync(se);
 }
예제 #21
0
        public async Task UpdateAsync(LimitOrder limitOrder)
        {
            var entity = new LimitOrderEntity(GetPartitionKey(limitOrder.AssetPairId), GetRowKey(limitOrder.Id));

            Mapper.Map(limitOrder, entity);

            await _storage.InsertOrMergeAsync(entity);
        }
        public async Task <IPaymentCallback> SetAsync(IPaymentCallback paymentCallback)
        {
            var entity = PaymentCallbackEntity.ByMerchant.Create(paymentCallback);

            await _tableStorage.InsertOrMergeAsync(entity);

            return(Mapper.Map <PaymentCallback>(entity));
        }
        public Task UpdateLimitOrdersCount(string clientId, int count)
        {
            var entity = ClientCacheEntity.Create(clientId);

            entity.LimitOrdersCount = count;

            return(_storage.InsertOrMergeAsync(entity));
        }
        public async Task <IGoogle2FaSecret> UpdateAsync(string clientId, bool isActive)
        {
            var entity = await _tableStorage.GetDataAsync(
                Google2FaSecretEntity.GeneratePartitionKey(),
                clientId);

            if (entity == null)
            {
                throw new InvalidOperationException();
            }

            entity.IsActive = isActive;

            await _tableStorage.InsertOrMergeAsync(entity);

            return(entity);
        }
        public async Task UpdateAsync(OrderBookTrader orderBookTrader)
        {
            var entity = new OrderBookEntity(GetPartitionKey(), GetRowKey(orderBookTrader.AssetPairId));

            Mapper.Map(orderBookTrader, entity);

            await _storage.InsertOrMergeAsync(entity);
        }
예제 #26
0
        public async Task CreateOrUpdateAsync(DefaultSetting setting)
        {
            var entity = new DefaultSettingsEntity(GetPartitionKey(), GetRowKey());

            Mapper.Map(setting, entity);

            await _storage.InsertOrMergeAsync(entity);
        }
 public async Task SetSettingAsync(string key, string value)
 {
     await _table.InsertOrMergeAsync(new AppSettingEntity
     {
         PartitionKey = AppSettingEntity.GeneratePartitionKey(),
         RowKey       = key,
         Value        = value
     });
 }
예제 #28
0
 public Task Add(string clientId, string id, string url)
 {
     return(_tableStorage.InsertOrMergeAsync(new HistoryExportEntry
     {
         PartitionKey = clientId,
         RowKey = id,
         Url = url
     }));
 }
예제 #29
0
        public async Task SaveKeyValueHistoryAsync(string keyValueId, string newValue, string keyValues, string userName,
                                                   string userIpAddress, DateTime atDate)
        {
            var th = new KeyValueHistory
            {
                KeyValueId    = keyValueId,
                NewValue      = newValue,
                PartitionKey  = KeyValueHistory.GeneratePartitionKey(),
                RowKey        = atDate.StorageString(),
                UserName      = userName,
                UserIpAddress = userIpAddress
            };

            th.KeyValuesSnapshot = $"{th.UserName}_{th.RowKey}_{th.UserIpAddress}";

            await _blobStorage.SaveBlobAsync(_container, th.KeyValuesSnapshot, Encoding.UTF8.GetBytes(keyValues));

            await _tableStorage.InsertOrMergeAsync(th);
        }
예제 #30
0
        public Task AddLogAsync <T>(string author, string entityId, string entityName, string change) where T : class
        {
            var entity      = AuditLogEntity.Create <T>(author, entityId, entityName, change);
            var authorIndex = AzureIndex.Create(AuditLogEntity.GenerateAuthorIndexPk(author), Guid.NewGuid().ToString(), entity.PartitionKey, entity.RowKey);

            return(Task.WhenAll(
                       _tableStorage.InsertOrMergeAsync(entity),
                       _authorIndex.InsertOrMergeAsync(authorIndex)
                       ));
        }