mirror of
https://github.com/btcpayserver/btcpayserver.git
synced 2025-02-23 14:40:36 +01:00
* Update notification dropdown strings * Update notification dropdown styling address #2131 * Update border color * Update notification hover color * Revert "was confirmed paid" to "has been paid" change * Move styles to site.css * Update style="border-bottom: 0;" to border-bottom-0 * Update heading * Add icon sprite * Add default icon styles * Use "currentColor" instead of specific color for icon * Update icon color definition * Adjust dropdown position * Update h4 to h5
81 lines
3.1 KiB
C#
81 lines
3.1 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using BTCPayServer.Abstractions.Contracts;
|
|
using BTCPayServer.Configuration;
|
|
using BTCPayServer.Controllers;
|
|
using BTCPayServer.Events;
|
|
using BTCPayServer.Models.NotificationViewModels;
|
|
using Microsoft.AspNetCore.Routing;
|
|
|
|
namespace BTCPayServer.Services.Notifications.Blobs
|
|
{
|
|
internal class InvoiceEventNotification:BaseNotification
|
|
{
|
|
private const string TYPE = "invoicestate";
|
|
internal class Handler : NotificationHandler<InvoiceEventNotification>
|
|
{
|
|
private readonly LinkGenerator _linkGenerator;
|
|
private readonly BTCPayServerOptions _options;
|
|
|
|
public Handler(LinkGenerator linkGenerator, BTCPayServerOptions options)
|
|
{
|
|
_linkGenerator = linkGenerator;
|
|
_options = options;
|
|
}
|
|
|
|
public override string NotificationType => TYPE;
|
|
|
|
public override (string identifier, string name)[] Meta
|
|
{
|
|
get
|
|
{
|
|
return new (string identifier, string name)[] {(TYPE, "All invoice updates"),}
|
|
.Concat(TextMapping.Select(pair => ($"{TYPE}_{pair.Key}", $"Invoice {pair.Value}"))).ToArray();
|
|
}
|
|
}
|
|
|
|
internal static Dictionary<string, string> TextMapping = new Dictionary<string, string>()
|
|
{
|
|
// {InvoiceEvent.PaidInFull, "was fully paid"},
|
|
{InvoiceEvent.PaidAfterExpiration, "was paid after expiration"},
|
|
{InvoiceEvent.ExpiredPaidPartial, "expired with partial payments"},
|
|
{InvoiceEvent.FailedToConfirm, "has payments that failed to confirm on time"},
|
|
// {InvoiceEvent.ReceivedPayment, "received a payment"},
|
|
{InvoiceEvent.Confirmed, "was confirmed paid"}
|
|
};
|
|
|
|
protected override void FillViewModel(InvoiceEventNotification notification,
|
|
NotificationViewModel vm)
|
|
{
|
|
var baseStr = $"Invoice {notification.InvoiceId.Substring(0, 5)}..";
|
|
if (TextMapping.ContainsKey(notification.Event))
|
|
{
|
|
vm.Body = $"{baseStr} {TextMapping[notification.Event]}";
|
|
}
|
|
vm.ActionLink = _linkGenerator.GetPathByAction(nameof(InvoiceController.Invoice),
|
|
"Invoice",
|
|
new { invoiceId = notification.InvoiceId }, _options.RootPath);
|
|
}
|
|
}
|
|
|
|
public InvoiceEventNotification()
|
|
{
|
|
}
|
|
|
|
public InvoiceEventNotification(string invoiceId, string invoiceEvent)
|
|
{
|
|
InvoiceId = invoiceId;
|
|
Event = invoiceEvent;
|
|
}
|
|
|
|
public static bool HandlesEvent(string invoiceEvent)
|
|
{
|
|
return Handler.TextMapping.Keys.Any(s => s == invoiceEvent);
|
|
}
|
|
|
|
public string InvoiceId { get; set; }
|
|
public string Event { get; set; }
|
|
public override string Identifier => $"{TYPE}_{Event}";
|
|
public override string NotificationType => TYPE;
|
|
}
|
|
}
|