Fix multiple TeleBot and admin panel issues

- Fix admin panel to show all pending orders (PendingPayment + PaymentReceived)
- Fix currency display from USD ($) to GBP (£) throughout TeleBot
- Update payment methods to use dynamic SilverPay currency list
- Consolidate shipping address collection into single message
- Implement cart backup/restore on payment failure
- Remove unsupported XMR from TeleBot config

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-09-24 15:04:24 +01:00
parent e7d97f581c
commit 524f0639e1
6 changed files with 140 additions and 122 deletions

View File

@@ -32,23 +32,27 @@ public class CurrencyController : ControllerBase
// Get SilverPay supported currencies
var silverPayCurrencies = await _silverPayService.GetSupportedCurrenciesAsync();
// Production currencies (always enabled if supported by SilverPay)
var productionCurrencies = new[] { "BTC", "ETH" };
foreach (var currency in productionCurrencies)
{
if (silverPayCurrencies.Contains(currency))
{
availableCurrencies.Add(currency);
}
}
// Test currencies that should be excluded unless explicitly enabled
var testCurrencies = new[] { "TBTC", "TETH", "TLTC", "TESTBTC", "TESTNET" };
// Test currencies (enabled via admin settings)
var testCurrencies = new[] { "TBTC", "TLTC" };
foreach (var currency in testCurrencies)
// Add all SilverPay supported currencies except test ones
foreach (var currency in silverPayCurrencies)
{
if (silverPayCurrencies.Contains(currency) &&
await _systemSettingsService.IsTestCurrencyEnabledAsync(currency))
var isTestCurrency = testCurrencies.Any(tc =>
currency.Contains(tc, StringComparison.OrdinalIgnoreCase) ||
currency.StartsWith("T", StringComparison.OrdinalIgnoreCase));
if (isTestCurrency)
{
// Only add test currencies if explicitly enabled in settings
if (await _systemSettingsService.IsTestCurrencyEnabledAsync(currency))
{
availableCurrencies.Add(currency);
}
}
else
{
// Add all production currencies
availableCurrencies.Add(currency);
}
}

View File

@@ -511,7 +511,18 @@ public class OrderService : IOrderService
public async Task<IEnumerable<OrderDto>> GetOrdersRequiringActionAsync()
{
return await GetOrdersByStatusAsync(OrderStatus.PaymentReceived);
var orders = await _context.Orders
.Include(o => o.Customer)
.Include(o => o.Items)
.ThenInclude(oi => oi.Product)
.Include(o => o.Items)
.ThenInclude(oi => oi.ProductMultiBuy)
.Include(o => o.Payments)
.Where(o => o.Status == OrderStatus.PendingPayment || o.Status == OrderStatus.PaymentReceived)
.OrderByDescending(o => o.CreatedAt)
.ToListAsync();
return orders.Select(MapToDto);
}
public async Task<IEnumerable<OrderDto>> GetOrdersForPackingAsync()