Fix missing refund flow error message

Fixes #3919.
This commit is contained in:
Dennis Reimann 2022-06-30 11:25:02 +02:00 committed by Andrew Camilleri
parent e5a1da7136
commit cf747f1e07
2 changed files with 23 additions and 15 deletions

View file

@ -193,19 +193,17 @@ namespace BTCPayServer.Controllers
var options = (await relevant.GetSupportedPaymentMethods(invoice.StoreData)).Where(id => pmis.Contains(id)).ToList();
if (!options.Any())
{
TempData.SetStatusMessageModel(new StatusMessageModel()
{
Severity = StatusMessageModel.StatusSeverity.Error,
Message = "There were no payment methods available to provide refunds with for this invoice."
});
return RedirectToAction(nameof(Invoice), new { invoiceId });
var vm = new RefundModel { Title = "No matching payment method" };
ModelState.AddModelError(nameof(vm.AvailablePaymentMethods),
"There are no payment methods available to provide refunds with for this invoice.");
return View("_RefundModal", vm);
}
var defaultRefund = invoice.Payments
.Select(p => p.GetBlob(_NetworkProvider))
.Select(p => p?.GetPaymentMethodId())
.FirstOrDefault(p => p != null && options.Contains(p));
// TODO: What if no option?
var refund = new RefundModel
{
Title = "Payment method",

View file

@ -13,18 +13,28 @@
<h5 class="mb-3">@Model.Title</h5>
<partial name="_StatusMessage" />
@if (!ViewContext.ModelState.IsValid)
{
<div asp-validation-summary="All" class="text-danger"></div>
}
@switch (Model.RefundStep)
{
case RefundSteps.SelectPaymentMethod:
<div class="form-group">
<label asp-for="SelectedPaymentMethod" class="form-label"></label>
<select asp-items="Model.AvailablePaymentMethods" asp-for="SelectedPaymentMethod" class="form-select"></select>
<span asp-validation-for="SelectedPaymentMethod" class="text-danger"></span>
</div>
if (Model.AvailablePaymentMethods != null && Model.AvailablePaymentMethods.Any())
{
<div class="form-group">
<label asp-for="SelectedPaymentMethod" class="form-label"></label>
<select asp-items="Model.AvailablePaymentMethods" asp-for="SelectedPaymentMethod" class="form-select"></select>
<span asp-validation-for="SelectedPaymentMethod" class="text-danger"></span>
</div>
<div class="form-group">
<button id="ok" type="submit" class="btn btn-primary w-100">Next</button>
</div>
<div class="form-group">
<button id="ok" type="submit" class="btn btn-primary w-100">Next</button>
</div>
}
break;
case RefundSteps.SelectRate: