do not have report name conflict with old plugin (#5826)

* do not have report name conflict with old plugin

* tryadd instead of add

* Apply #5816 to crowdfund too
This commit is contained in:
Andrew Camilleri 2024-03-11 14:18:47 +01:00 committed by GitHub
parent dcc6f17c9c
commit a60072a431
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 46 additions and 23 deletions

View file

@ -132,26 +132,9 @@ namespace BTCPayServer.Plugins.Crowdfund.Controllers
}
JObject formResponseJObject = null;
if (settings.FormId is not null)
{
var formData = await FormDataService.GetForm(settings.FormId);
if (formData is not null)
{
formResponseJObject = TryParseJObject(formResponse) ?? new JObject();
var form = Form.Parse(formData.Config);
FormDataService.SetValues(form, formResponseJObject);
if (!FormDataService.Validate(form, ModelState))
{
// someone tried to bypass validation
return RedirectToAction(nameof(ViewCrowdfund), new { appId });
}
}
}
var store = await _appService.GetStore(app);
var title = settings.Title;
decimal? price = request.Amount;
var title = settings.Title;
Dictionary<string, InvoiceSupportedTransactionCurrency> paymentMethods = null;
ViewPointOfSaleViewModel.Item choice = null;
if (!string.IsNullOrEmpty(request.ChoiceKey))
@ -195,6 +178,48 @@ namespace BTCPayServer.Plugins.Crowdfund.Controllers
price = request.Amount;
}
if (settings.FormId is not null)
{
var formData = await FormDataService.GetForm(settings.FormId);
if (formData is not null)
{
formResponseJObject = TryParseJObject(formResponse) ?? new JObject();
var form = Form.Parse(formData.Config);
FormDataService.SetValues(form, formResponseJObject);
if (!FormDataService.Validate(form, ModelState))
{
// someone tried to bypass validation
return RedirectToAction(nameof(ViewCrowdfund), new { appId });
}
var amtField = form.GetFieldByFullName($"{FormDataService.InvoiceParameterPrefix}amount");
if (amtField is null)
{
form.Fields.Add(new Field
{
Name = $"{FormDataService.InvoiceParameterPrefix}amount",
Type = "hidden",
Value = price?.ToString(),
Constant = true
});
}
else
{
amtField.Value = price?.ToString();
}
formResponseJObject = FormDataService.GetValues(form);
var invoiceRequest = FormDataService.GenerateInvoiceParametersFromForm(form);
if (invoiceRequest.Amount is not null)
{
price = invoiceRequest.Amount.Value;
}
}
}
if (!isAdmin && (settings.EnforceTargetAmount && info.TargetAmount.HasValue && price >
(info.TargetAmount - (info.Info.CurrentAmount + info.Info.CurrentPendingAmount))))
{

View file

@ -1,6 +1,4 @@
using System.Collections.Generic;
using System.Linq;
using BTCPayServer.Client.Models;
using BTCPayServer.Services.Reporting;
namespace BTCPayServer.Services
@ -11,10 +9,10 @@ namespace BTCPayServer.Services
{
foreach (var r in reportProviders)
{
ReportProviders.Add(r.Name, r);
ReportProviders.TryAdd(r.Name, r);
}
}
public Dictionary<string, ReportProvider> ReportProviders { get; } = new Dictionary<string, ReportProvider>();
public Dictionary<string, ReportProvider> ReportProviders { get; } = new();
}
}

View file

@ -15,7 +15,7 @@ public class LegacyInvoiceExportReportProvider : ReportProvider
private readonly InvoiceRepository _invoiceRepository;
public override string Name { get; } = "Invoice Export (legacy)";
public override string Name { get; } = "Legacy Invoice Export";
public override async Task Query(QueryContext queryContext, CancellationToken cancellation)
{