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

View file

@ -13,9 +13,18 @@
<h5 class="mb-3">@Model.Title</h5> <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) @switch (Model.RefundStep)
{ {
case RefundSteps.SelectPaymentMethod: case RefundSteps.SelectPaymentMethod:
if (Model.AvailablePaymentMethods != null && Model.AvailablePaymentMethods.Any())
{
<div class="form-group"> <div class="form-group">
<label asp-for="SelectedPaymentMethod" class="form-label"></label> <label asp-for="SelectedPaymentMethod" class="form-label"></label>
<select asp-items="Model.AvailablePaymentMethods" asp-for="SelectedPaymentMethod" class="form-select"></select> <select asp-items="Model.AvailablePaymentMethods" asp-for="SelectedPaymentMethod" class="form-select"></select>
@ -25,6 +34,7 @@
<div class="form-group"> <div class="form-group">
<button id="ok" type="submit" class="btn btn-primary w-100">Next</button> <button id="ok" type="submit" class="btn btn-primary w-100">Next</button>
</div> </div>
}
break; break;
case RefundSteps.SelectRate: case RefundSteps.SelectRate: