Beispiel #1
0
        public async Task <OperationResponse> CreateWithdrawalProfile(CreateGroupRequest request)
        {
            try
            {
                var groups = await _profileWriter.GetAsync(FeeProfilesNoSqlEntity.GeneratePartitionKey(),
                                                           FeeProfilesNoSqlEntity.GenerateRowKey());

                var withdrawalList = groups?.Profiles ?? new List <string>();
                var depositList    = groups?.DepositProfiles ?? new List <string>()
                {
                    FeeProfileConsts.DefaultProfile
                };
                withdrawalList.Add(request.ProfileId);
                await _profileWriter.InsertOrReplaceAsync(FeeProfilesNoSqlEntity.Create(withdrawalList.Distinct().ToList(), depositList));

                if (!string.IsNullOrWhiteSpace(request.CloneFromProfileId))
                {
                    var assets =
                        (await _assetWriter.GetAsync(
                             AssetFeesNoSqlEntity.GeneratePartitionKey(request.BrokerId, request.CloneFromProfileId)))
                        .Select(t => t.AssetFees).ToList();

                    foreach (var asset in assets)
                    {
                        asset.ProfileId = request.ProfileId;
                    }

                    await _assetWriter.BulkInsertOrReplaceAsync(assets.Select(AssetFeesNoSqlEntity.Create).ToList());
                }

                return(new OperationResponse()
                {
                    IsSuccess = true
                });
            }
            catch (Exception e)
            {
                return(new OperationResponse()
                {
                    IsSuccess = false,
                    ErrorText = e.Message
                });
            }
        }
Beispiel #2
0
        public async Task <OperationResponse> DeleteWithdrawalProfile(DeleteProfileRequest request)
        {
            try
            {
                var groups = await _profileWriter.GetAsync(FeeProfilesNoSqlEntity.GeneratePartitionKey(),
                                                           FeeProfilesNoSqlEntity.GenerateRowKey());

                var withdrawalList = groups?.Profiles ?? new List <string>();
                var depositList    = groups?.DepositProfiles ?? new List <string>()
                {
                    FeeProfileConsts.DefaultProfile
                };

                var list = withdrawalList.Distinct().ToList();
                list.Remove(request.ProfileId);
                await _profileWriter.InsertOrReplaceAsync(FeeProfilesNoSqlEntity.Create(list, depositList));

                var assets =
                    (await _assetWriter.GetAsync(
                         AssetFeesNoSqlEntity.GeneratePartitionKey(request.BrokerId, request.ProfileId))).ToList();

                foreach (var asset in assets)
                {
                    await _assetWriter.DeleteAsync(asset.PartitionKey, asset.RowKey);
                }

                return(new OperationResponse()
                {
                    IsSuccess = true
                });
            }
            catch (Exception e)
            {
                return(new OperationResponse()
                {
                    IsSuccess = false,
                    ErrorText = e.Message
                });
            }
        }
Beispiel #3
0
        public async Task <ProfilesResponse> GetAllProfiles()
        {
            var groups = await _profileWriter.GetAsync(FeeProfilesNoSqlEntity.GeneratePartitionKey(), FeeProfilesNoSqlEntity.GenerateRowKey());

            if (groups.DepositProfiles == null || !groups.DepositProfiles.Any())
            {
                var list = new List <string>()
                {
                    FeeProfileConsts.DefaultProfile
                };
                await _profileWriter.InsertOrReplaceAsync(FeeProfilesNoSqlEntity.Create(groups.Profiles, list));
            }

            return(new ProfilesResponse()
            {
                WithdrawalProfiles = groups?.Profiles ?? new List <string>(),
                DepositProfiles = groups?.DepositProfiles ?? new List <string>()
                {
                    FeeProfileConsts.DefaultProfile
                }
            });
        }