mirror of
https://github.com/aljazceru/btcpayserver.git
synced 2025-12-18 06:24:24 +01:00
[Feature] Can configure fallback rates
This commit is contained in:
@@ -71,11 +71,12 @@ namespace BTCPayServer.Controllers
|
||||
public async Task<IActionResult> CreateStore(bool skipWizard)
|
||||
{
|
||||
var stores = await _repo.GetStoresByUserId(GetUserId());
|
||||
var defaultCurrency = (await _settingsRepository.GetSettingAsync<PoliciesSettings>())?.DefaultCurrency ?? StoreBlob.StandardDefaultCurrency;
|
||||
var vm = new CreateStoreViewModel
|
||||
{
|
||||
IsFirstStore = !(stores.Any() || skipWizard),
|
||||
DefaultCurrency = (await _settingsRepository.GetSettingAsync<PoliciesSettings>())?.DefaultCurrency ?? StoreBlob.StandardDefaultCurrency,
|
||||
Exchanges = GetExchangesSelectList(null)
|
||||
DefaultCurrency = defaultCurrency,
|
||||
Exchanges = GetExchangesSelectList(defaultCurrency, null)
|
||||
};
|
||||
|
||||
return View(vm);
|
||||
@@ -89,14 +90,15 @@ namespace BTCPayServer.Controllers
|
||||
{
|
||||
var stores = await _repo.GetStoresByUserId(GetUserId());
|
||||
vm.IsFirstStore = !stores.Any();
|
||||
vm.Exchanges = GetExchangesSelectList(null);
|
||||
var defaultCurrency = (await _settingsRepository.GetSettingAsync<PoliciesSettings>())?.DefaultCurrency ?? StoreBlob.StandardDefaultCurrency;
|
||||
vm.Exchanges = GetExchangesSelectList(defaultCurrency, null);
|
||||
return View(vm);
|
||||
}
|
||||
|
||||
var store = new StoreData { StoreName = vm.Name };
|
||||
var blob = store.GetStoreBlob();
|
||||
blob.DefaultCurrency = vm.DefaultCurrency;
|
||||
blob.PreferredExchange = vm.PreferredExchange;
|
||||
blob.GetOrCreateRateSettings(false).PreferredExchange = vm.PreferredExchange;
|
||||
store.SetStoreBlob(blob);
|
||||
await _repo.CreateStore(GetUserId(), store);
|
||||
CreatedStoreId = store.Id;
|
||||
@@ -132,18 +134,18 @@ namespace BTCPayServer.Controllers
|
||||
|
||||
private string GetUserId() => _userManager.GetUserId(User);
|
||||
|
||||
internal SelectList GetExchangesSelectList(StoreBlob storeBlob)
|
||||
internal SelectList GetExchangesSelectList(string defaultCurrency, StoreBlob.RateSettings rateSettings)
|
||||
{
|
||||
if (storeBlob is null)
|
||||
storeBlob = new StoreBlob();
|
||||
var defaultExchange = _defaultRules.GetRecommendedExchange(storeBlob.DefaultCurrency);
|
||||
if (rateSettings is null)
|
||||
rateSettings = new ();
|
||||
var defaultExchange = _defaultRules.GetRecommendedExchange(defaultCurrency);
|
||||
var exchanges = _rateFactory.RateProviderFactory
|
||||
.AvailableRateProviders
|
||||
.OrderBy(s => s.Id, StringComparer.OrdinalIgnoreCase)
|
||||
.ToList();
|
||||
var exchange = exchanges.First(e => e.Id == defaultExchange);
|
||||
exchanges.Insert(0, new(null, StringLocalizer["Recommendation ({0})", exchange.DisplayName], ""));
|
||||
var chosen = exchanges.FirstOrDefault(f => f.Id == storeBlob.PreferredExchange) ?? exchanges.First();
|
||||
var chosen = exchanges.FirstOrDefault(f => f.Id == rateSettings.PreferredExchange) ?? exchanges.First();
|
||||
return new SelectList(exchanges, nameof(chosen.Id), nameof(chosen.DisplayName), chosen.Id);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user