using MongoDB.Bson; using MongoDB.Bson.Serialization.Attributes; namespace BCards.Web.Models; public class LivePage : IPageDisplay { [BsonId] [BsonRepresentation(BsonType.ObjectId)] public string Id { get; set; } = string.Empty; [BsonElement("originalPageId")] [BsonRepresentation(BsonType.ObjectId)] public string OriginalPageId { get; set; } = string.Empty; [BsonElement("userId")] [BsonRepresentation(BsonType.ObjectId)] public string UserId { get; set; } = string.Empty; [BsonElement("category")] public string Category { get; set; } = string.Empty; [BsonElement("slug")] public string Slug { get; set; } = string.Empty; [BsonElement("displayName")] public string DisplayName { get; set; } = string.Empty; [BsonElement("bio")] public string Bio { get; set; } = string.Empty; [BsonElement("profileImage")] public string ProfileImage { get; set; } = string.Empty; [BsonElement("businessType")] public string BusinessType { get; set; } = string.Empty; [BsonElement("theme")] public PageTheme Theme { get; set; } = new(); [BsonElement("links")] public List Links { get; set; } = new(); [BsonElement("seoSettings")] public SeoSettings SeoSettings { get; set; } = new(); [BsonElement("language")] public string Language { get; set; } = "pt-BR"; [BsonElement("analytics")] public LivePageAnalytics Analytics { get; set; } = new(); [BsonElement("publishedAt")] public DateTime PublishedAt { get; set; } [BsonElement("lastSyncAt")] public DateTime LastSyncAt { get; set; } [BsonElement("createdAt")] public DateTime CreatedAt { get; set; } public string FullUrl => $"page/{Category}/{Slug}"; } public class LivePageAnalytics { [BsonElement("totalViews")] public long TotalViews { get; set; } [BsonElement("totalClicks")] public long TotalClicks { get; set; } [BsonElement("lastViewedAt")] public DateTime? LastViewedAt { get; set; } }