public async Task UpdateDepositFeesSettings(DepositFees settings) { using var action = MyTelemetry.StartActivity("Update Deposit Fees Settings"); settings.AddToActivityAsJsonTag("settings"); try { _logger.LogInformation("Update Deposit Fees Setting: {jsonText}", JsonConvert.SerializeObject(settings)); ValidateSettings(settings); var entity = DepositFeesNoSqlEntity.Create(settings); var existingItem = await _writer.GetAsync(entity.PartitionKey, entity.RowKey); if (existingItem == null) { throw new Exception("Cannot update Deposit Fees Settings. Do not exist"); } await _writer.InsertOrReplaceAsync(entity); _logger.LogInformation("Updated Deposit Fees Setting: {jsonText}", JsonConvert.SerializeObject(settings)); } catch (Exception ex) { _logger.LogError(ex, "Cannot update ExternalMarketSettings: {requestJson}", JsonConvert.SerializeObject(settings)); ex.FailActivity(); throw; } }
public async Task RemoveDepositFeesSettings(RemoveDepositFeesRequest request) { using var action = MyTelemetry.StartActivity("Remove Deposit Fees Settings"); request.AddToActivityAsJsonTag("request"); try { _logger.LogInformation("Remove Deposit Fees Setting: {jsonText}", JsonConvert.SerializeObject(request)); var entity = await _writer.DeleteAsync(DepositFeesNoSqlEntity.GeneratePartitionKey(request.BrokerId, request.ProfileId), DepositFeesNoSqlEntity.GenerateRowKey(request.AssetId)); if (entity != null) { _logger.LogInformation("Removed Deposit Fees Settings: {jsonText}", JsonConvert.SerializeObject(entity)); } else { _logger.LogInformation("Unable to remove Deposit Fees Setting, do not exist: {jsonText}", JsonConvert.SerializeObject(request)); } } catch (Exception ex) { _logger.LogError(ex, "Cannot remove ExternalMarketSettings: {requestJson}", JsonConvert.SerializeObject(request)); ex.FailActivity(); throw; } }
public DepositFees GetDepositFees(string brokerId, string groupId, string assetId) { var entity = _depositFeesReader.Get(DepositFeesNoSqlEntity.GeneratePartitionKey(brokerId, groupId), DepositFeesNoSqlEntity.GenerateRowKey(assetId)); if (entity == null) { return(new DepositFees { FeeType = FeeType.NoFee }); } return(entity?.DepositFees); }
public async Task <OperationResponse> CreateDepositProfile(CreateGroupRequest request) { try { var groups = await _profileWriter.GetAsync(FeeProfilesNoSqlEntity.GeneratePartitionKey(), FeeProfilesNoSqlEntity.GenerateRowKey()); var withdrawalList = groups?.Profiles ?? new List <string>() { FeeProfileConsts.DefaultProfile }; var depositList = groups?.DepositProfiles ?? new List <string>(); depositList.Add(request.ProfileId); await _profileWriter.InsertOrReplaceAsync(FeeProfilesNoSqlEntity.Create(withdrawalList, depositList.Distinct().ToList())); if (!string.IsNullOrWhiteSpace(request.CloneFromProfileId)) { var assets = (await _depositWriter.GetAsync( DepositFeesNoSqlEntity.GeneratePartitionKey(request.BrokerId, request.CloneFromProfileId))) .Select(t => t.DepositFees).ToList(); foreach (var asset in assets) { asset.ProfileId = request.ProfileId; } await _depositWriter.BulkInsertOrReplaceAsync(assets.Select(DepositFeesNoSqlEntity.Create).ToList()); } return(new OperationResponse() { IsSuccess = true }); } catch (Exception e) { return(new OperationResponse() { IsSuccess = false, ErrorText = e.Message }); } }
public async Task <OperationResponse> DeleteDepositProfile(DeleteProfileRequest request) { try { var groups = await _profileWriter.GetAsync(FeeProfilesNoSqlEntity.GeneratePartitionKey(), FeeProfilesNoSqlEntity.GenerateRowKey()); var withdrawalList = groups?.Profiles ?? new List <string>() { FeeProfileConsts.DefaultProfile }; var depositList = groups?.DepositProfiles ?? new List <string>(); var list = depositList.Distinct().ToList(); list.Remove(request.ProfileId); await _profileWriter.InsertOrReplaceAsync(FeeProfilesNoSqlEntity.Create(withdrawalList, list)); var assets = (await _depositWriter.GetAsync( DepositFeesNoSqlEntity.GeneratePartitionKey(request.BrokerId, request.ProfileId))).ToList(); foreach (var asset in assets) { await _depositWriter.DeleteAsync(asset.PartitionKey, asset.RowKey); } return(new OperationResponse() { IsSuccess = true }); } catch (Exception e) { return(new OperationResponse() { IsSuccess = false, ErrorText = e.Message }); } }