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 }