using MongoDB.Bson; using MongoDB.Bson.Serialization.Attributes; namespace BCards.Web.Models; public class Subscription { [BsonId] [BsonRepresentation(BsonType.ObjectId)] public string Id { get; set; } = string.Empty; [BsonElement("userId")] [BsonRepresentation(BsonType.ObjectId)] public string UserId { get; set; } = string.Empty; [BsonElement("stripeSubscriptionId")] public string StripeSubscriptionId { get; set; } = string.Empty; [BsonElement("planType")] public string PlanType { get; set; } = "free"; [BsonElement("status")] public string Status { get; set; } = "active"; [BsonElement("currentPeriodStart")] public DateTime CurrentPeriodStart { get; set; } [BsonElement("currentPeriodEnd")] public DateTime CurrentPeriodEnd { get; set; } [BsonElement("cancelAtPeriodEnd")] public bool CancelAtPeriodEnd { get; set; } = false; [BsonElement("maxLinks")] public int MaxLinks { get; set; } = 5; [BsonElement("allowCustomThemes")] public bool AllowCustomThemes { get; set; } = false; [BsonElement("allowAnalytics")] public bool AllowAnalytics { get; set; } = false; [BsonElement("allowCustomDomain")] public bool AllowCustomDomain { get; set; } = false; [BsonElement("allowMultipleDomains")] public bool AllowMultipleDomains { get; set; } = false; [BsonElement("prioritySupport")] public bool PrioritySupport { get; set; } = false; [BsonElement("createdAt")] public DateTime CreatedAt { get; set; } = DateTime.UtcNow; [BsonElement("updatedAt")] public DateTime UpdatedAt { get; set; } = DateTime.UtcNow; }