示例#1
0
        public async Task <ActionResult> AddOrEditMarkup(AddOrEditMarkupDialogViewModel vm)
        {
            if (string.IsNullOrEmpty(vm.AssetPairId))
            {
                return(this.JsonFailResult("AssetPairId required", ErrorMessageAnchor));
            }
            if (!vm.IsEditMode)
            {
                var markup = new MarkupResponse();
                try
                {
                    if (!string.IsNullOrEmpty(vm.AssetPairId) && vm.SelectedMerchant == "Default")
                    {
                        markup = await _payInternalClient.GetDefaultMarkupAsync(vm.AssetPairId);
                    }
                    else if (!string.IsNullOrEmpty(vm.AssetPairId))
                    {
                        markup = await _payInternalClient.GetMarkupForMerchantAsync(vm.SelectedMerchant, vm.AssetPairId);
                    }
                }
                catch (DefaultErrorResponseException ex)
                {
                    markup = null;
                }
                if (markup != null)
                {
                    return(this.JsonFailResult("Markup exist: " + markup.AssetPairId, ErrorMessageAnchor));
                }
            }
            var request = new UpdateMarkupRequest();

            request.DeltaSpread      = vm.DeltaSpread;
            request.FixedFee         = vm.FixedFee;
            request.Percent          = vm.Percent;
            request.Pips             = vm.Pips;
            request.PriceAssetPairId = vm.PriceAssetPairId;
            var pricemethod = PriceMethod.None;

            Enum.TryParse <PriceMethod>(vm.SelectedPriceMethod, out pricemethod);
            request.PriceMethod = pricemethod;
            try
            {
                if (string.IsNullOrEmpty(vm.SelectedMerchant) || vm.SelectedMerchant == "Default")
                {
                    await _payInternalClient.SetDefaultMarkupAsync(vm.AssetPairId, request);
                }
                else
                {
                    await _payInternalClient.SetMarkupForMerchantAsync(vm.SelectedMerchant, vm.AssetPairId, request);
                }
                return(this.JsonRequestResult("#markupsList", Url.Action("MarkupsList"), new StaffsPageViewModel()
                {
                    SelectedMerchant = vm.SelectedMerchant
                }));
            }
            catch (DefaultErrorResponseException ex)
            {
                return(this.JsonFailResult("Error: " + ex.Error.ErrorMessage, ErrorMessageAnchor));
            }
        }
示例#2
0
        public async Task <IActionResult> SetForMerchant(string merchantId, string assetPairId,
                                                         [FromBody] UpdateMarkupRequest request)
        {
            IMerchant merchant = await _merchantService.GetAsync(merchantId);

            if (merchant == null)
            {
                return(NotFound(ErrorResponse.Create("Merchant not found")));
            }

            if (!string.IsNullOrEmpty(request.PriceAssetPairId))
            {
                AssetPair priceAssetPair = await _assetsLocalCache.GetAssetPairByIdAsync(request.PriceAssetPairId);

                if (priceAssetPair == null)
                {
                    return(NotFound(ErrorResponse.Create("Price asset pair doesn't exist")));
                }
            }

            try
            {
                await _markupService.SetForMerchantAsync(assetPairId, merchantId, request.PriceAssetPairId, request.PriceMethod, request);

                return(Ok());
            }
            catch (Exception ex)
            {
                await _log.WriteErrorAsync(nameof(MarkupsController), nameof(SetForMerchant), ex);

                throw;
            }
        }
示例#3
0
        public async Task <IActionResult> SetDefault(string assetPairId, [FromBody] UpdateMarkupRequest request)
        {
            if (!string.IsNullOrEmpty(request.PriceAssetPairId))
            {
                AssetPair priceAssetPair = await _assetsLocalCache.GetAssetPairByIdAsync(request.PriceAssetPairId);

                if (priceAssetPair == null)
                {
                    return(NotFound(ErrorResponse.Create("Price asset pair doesn't exist")));
                }
            }

            try
            {
                await _markupService.SetDefaultAsync(Uri.UnescapeDataString(assetPairId), request.PriceAssetPairId,
                                                     request.PriceMethod, request);

                return(Ok());
            }
            catch (InvalidRowKeyValueException e)
            {
                _log.ErrorWithDetails(e, new
                {
                    e.Variable,
                    e.Value
                });

                return(NotFound(ErrorResponse.Create("Asset pair not found")));
            }
        }
示例#4
0
 public Task SetMarkupForMerchantAsync(string merchantId, string assetPairId, UpdateMarkupRequest request)
 {
     return(_runner.RunWithDefaultErrorHandlingAsync(() => _markupsApi.SetForMerchantAsync(merchantId, assetPairId, request)));
 }
示例#5
0
 public Task SetDefaultMarkupAsync(string assetPairId, UpdateMarkupRequest request)
 {
     return(_runner.RunWithDefaultErrorHandlingAsync(() => _markupsApi.SetDefaultAsync(assetPairId, request)));
 }