Files
PowderCoatingLogix/src/PowderCoating.Core/Entities/StripeWebhookEvent.cs
T
2026-04-23 21:38:24 -04:00

39 lines
1.1 KiB
C#

namespace PowderCoating.Core.Entities;
/// <summary>
/// Persists every incoming Stripe webhook event for auditing and debugging.
/// Not a BaseEntity — platform-wide, no soft delete, no tenant filter.
/// </summary>
public class StripeWebhookEvent
{
public long Id { get; set; }
/// <summary>Stripe event ID (evt_...).</summary>
public string EventId { get; set; } = string.Empty;
/// <summary>Stripe event type string (e.g. customer.subscription.updated).</summary>
public string EventType { get; set; } = string.Empty;
/// <summary>Linked company, if resolvable from the event payload.</summary>
public int? CompanyId { get; set; }
/// <summary>Full raw JSON body of the event.</summary>
public string RawJson { get; set; } = string.Empty;
public StripeWebhookEventStatus Status { get; set; } = StripeWebhookEventStatus.Received;
public string? ErrorMessage { get; set; }
public DateTime ReceivedAt { get; set; } = DateTime.UtcNow;
public DateTime? ProcessedAt { get; set; }
}
public enum StripeWebhookEventStatus
{
Received = 0,
Processed = 1,
Failed = 2,
Ignored = 3
}