mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2025-02-22 06:21:44 +01:00
Improve invoices status filter (#5248)
This commit is contained in:
parent
b5d0188f21
commit
c0fc31c69a
2 changed files with 40 additions and 41 deletions
|
@ -662,54 +662,52 @@ namespace BTCPayServer.Services.Invoices
|
|||
|
||||
if (queryObject.OrderId is { Length: > 0 })
|
||||
{
|
||||
var statusSet = queryObject.OrderId.ToHashSet().ToArray();
|
||||
query = query.Where(i => statusSet.Contains(i.OrderId));
|
||||
var orderIdSet = queryObject.OrderId.ToHashSet().ToArray();
|
||||
query = query.Where(i => orderIdSet.Contains(i.OrderId));
|
||||
}
|
||||
if (queryObject.ItemCode is { Length: > 0 })
|
||||
{
|
||||
var statusSet = queryObject.ItemCode.ToHashSet().ToArray();
|
||||
query = query.Where(i => statusSet.Contains(i.ItemCode));
|
||||
var itemCodeSet = queryObject.ItemCode.ToHashSet().ToArray();
|
||||
query = query.Where(i => itemCodeSet.Contains(i.ItemCode));
|
||||
}
|
||||
|
||||
if (queryObject.Status is { Length: > 0 })
|
||||
var statusSet = queryObject.Status is { Length: > 0 }
|
||||
? queryObject.Status.Select(s => s.ToLowerInvariant()).ToHashSet()
|
||||
: new HashSet<string>();
|
||||
var exceptionStatusSet = queryObject.ExceptionStatus is { Length: > 0 }
|
||||
? queryObject.ExceptionStatus.Select(NormalizeExceptionStatus).ToHashSet()
|
||||
: new HashSet<string>();
|
||||
|
||||
// We make sure here that the old filters still work
|
||||
if (statusSet.Contains("paid"))
|
||||
statusSet.Add("processing");
|
||||
if (statusSet.Contains("processing"))
|
||||
statusSet.Add("paid");
|
||||
if (statusSet.Contains("confirmed"))
|
||||
{
|
||||
var statusSet = queryObject.Status.Select(s => s.ToLowerInvariant()).ToHashSet();
|
||||
// We make sure here that the old filters still work
|
||||
foreach (var status in queryObject.Status)
|
||||
{
|
||||
if (status == "paid")
|
||||
statusSet.Add("processing");
|
||||
if (status == "processing")
|
||||
statusSet.Add("paid");
|
||||
if (status == "confirmed")
|
||||
{
|
||||
statusSet.Add("complete");
|
||||
statusSet.Add("settled");
|
||||
}
|
||||
if (status == "settled")
|
||||
{
|
||||
statusSet.Add("complete");
|
||||
statusSet.Add("confirmed");
|
||||
}
|
||||
if (status == "complete")
|
||||
{
|
||||
statusSet.Add("settled");
|
||||
statusSet.Add("confirmed");
|
||||
}
|
||||
}
|
||||
query = query.Where(i => statusSet.Contains(i.Status));
|
||||
statusSet.Add("complete");
|
||||
statusSet.Add("settled");
|
||||
}
|
||||
if (statusSet.Contains("settled"))
|
||||
{
|
||||
statusSet.Add("complete");
|
||||
statusSet.Add("confirmed");
|
||||
}
|
||||
if (statusSet.Contains("complete"))
|
||||
{
|
||||
statusSet.Add("settled");
|
||||
statusSet.Add("confirmed");
|
||||
}
|
||||
|
||||
if (statusSet.Any() || exceptionStatusSet.Any())
|
||||
{
|
||||
query = query.Where(i => statusSet.Contains(i.Status) || exceptionStatusSet.Contains(i.ExceptionStatus));
|
||||
}
|
||||
|
||||
if (queryObject.Unusual != null)
|
||||
{
|
||||
var unused = queryObject.Unusual.Value;
|
||||
query = query.Where(i => unused == (i.Status == "invalid" || !string.IsNullOrEmpty(i.ExceptionStatus)));
|
||||
}
|
||||
|
||||
if (queryObject.ExceptionStatus is { Length: > 0 })
|
||||
{
|
||||
var exceptionStatusSet = queryObject.ExceptionStatus.Select(NormalizeExceptionStatus).ToHashSet().ToArray();
|
||||
query = query.Where(i => exceptionStatusSet.Contains(i.ExceptionStatus));
|
||||
var unusual = queryObject.Unusual.Value;
|
||||
query = query.Where(i => unusual == (i.Status == "invalid" || !string.IsNullOrEmpty(i.ExceptionStatus)));
|
||||
}
|
||||
|
||||
query = query.OrderByDescending(q => q.Created);
|
||||
|
|
|
@ -251,15 +251,16 @@
|
|||
}
|
||||
</button>
|
||||
<div class="dropdown-menu" aria-labelledby="StatusOptionsToggle">
|
||||
<a asp-action="ListInvoices" asp-route-storeId="@Model.StoreId" asp-route-count="@Model.Count" asp-route-searchTerm="@Model.Search.Toggle("status", "invalid")" class="dropdown-item @(HasArrayFilter("status", "invalid") ? "custom-active" : "")">Invalid</a>
|
||||
<a asp-action="ListInvoices" asp-route-storeId="@Model.StoreId" asp-route-count="@Model.Count" asp-route-searchTerm="@Model.Search.Toggle("status", "processing")" class="dropdown-item @(HasArrayFilter("status", "processing") ? "custom-active" : "")">Processing</a>
|
||||
<a asp-action="ListInvoices" asp-route-storeId="@Model.StoreId" asp-route-count="@Model.Count" asp-route-searchTerm="@Model.Search.Toggle("status", "settled")" class="dropdown-item @(HasArrayFilter("status", "settled") ? "custom-active" : "")">Settled</a>
|
||||
<a asp-action="ListInvoices" asp-route-storeId="@Model.StoreId" asp-route-count="@Model.Count" asp-route-searchTerm="@Model.Search.Toggle("status", "processing")" class="dropdown-item @(HasArrayFilter("status", "processing") ? "custom-active" : "")">Processing</a>
|
||||
<a asp-action="ListInvoices" asp-route-storeId="@Model.StoreId" asp-route-count="@Model.Count" asp-route-searchTerm="@Model.Search.Toggle("status", "expired")" class="dropdown-item @(HasArrayFilter("status", "expired") ? "custom-active" : "")">Expired</a>
|
||||
<a asp-action="ListInvoices" asp-route-storeId="@Model.StoreId" asp-route-count="@Model.Count" asp-route-searchTerm="@Model.Search.Toggle("status", "invalid")" class="dropdown-item @(HasArrayFilter("status", "invalid") ? "custom-active" : "")">Invalid</a>
|
||||
<hr class="dropdown-divider">
|
||||
<a asp-action="ListInvoices" asp-route-storeId="@Model.StoreId" asp-route-count="@Model.Count" asp-route-searchTerm="@Model.Search.Toggle("exceptionstatus", "paidLate")" class="dropdown-item @(HasArrayFilter("exceptionstatus", "paidLate") ? "custom-active" : "")">Settled Late</a>
|
||||
<a asp-action="ListInvoices" asp-route-storeId="@Model.StoreId" asp-route-count="@Model.Count" asp-route-searchTerm="@Model.Search.Toggle("exceptionstatus", "paidPartial")" class="dropdown-item @(HasArrayFilter("exceptionstatus", "paidPartial") ? "custom-active" : "")">Settled Partial</a>
|
||||
<a asp-action="ListInvoices" asp-route-storeId="@Model.StoreId" asp-route-count="@Model.Count" asp-route-searchTerm="@Model.Search.Toggle("exceptionstatus", "paidOver")" class="dropdown-item @(HasArrayFilter("exceptionstatus", "paidOver") ? "custom-active" : "")">Settled Over</a>
|
||||
<hr class="dropdown-divider">
|
||||
<a asp-action="ListInvoices" asp-route-storeId="@Model.StoreId" asp-route-count="@Model.Count" asp-route-searchTerm="@Model.Search.Toggle("unusual", "true")" class="dropdown-item @(HasBooleanFilter("unusual") ? "custom-active" : "")">Unusual</a>
|
||||
<hr class="dropdown-divider">
|
||||
<a asp-action="ListInvoices" asp-route-storeId="@Model.StoreId" asp-route-count="@Model.Count" asp-route-searchTerm="@Model.Search.Toggle("includearchived", "true")" class="dropdown-item @(HasBooleanFilter("includearchived") ? "custom-active" : "")" id="StatusOptionsIncludeArchived">Archived</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
Loading…
Add table
Reference in a new issue