namespace PowderCoating.Core.Entities;
///
/// Persists every incoming Stripe webhook event for auditing and debugging.
/// Not a BaseEntity — platform-wide, no soft delete, no tenant filter.
///
public class StripeWebhookEvent
{
public long Id { get; set; }
/// Stripe event ID (evt_...).
public string EventId { get; set; } = string.Empty;
/// Stripe event type string (e.g. customer.subscription.updated).
public string EventType { get; set; } = string.Empty;
/// Linked company, if resolvable from the event payload.
public int? CompanyId { get; set; }
/// Full raw JSON body of the event.
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
}