QrRapido/Models/User.cs

63 lines
2.0 KiB
C#

using MongoDB.Bson;
using MongoDB.Bson.Serialization.Attributes;
namespace QRRapidoApp.Models
{
public class User
{
[BsonId]
[BsonRepresentation(BsonType.ObjectId)]
public string Id { get; set; } = string.Empty;
[BsonElement("email")]
public string Email { get; set; } = string.Empty;
[BsonElement("name")]
public string Name { get; set; } = string.Empty;
[BsonElement("provider")]
public string Provider { get; set; } = string.Empty; // Google, Microsoft
[BsonElement("providerId")]
public string ProviderId { get; set; } = string.Empty;
[BsonElement("isPremium")]
public bool IsPremium { get; set; } = false;
[BsonElement("createdAt")]
public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
[BsonElement("premiumExpiresAt")]
public DateTime? PremiumExpiresAt { get; set; }
[BsonElement("premiumCancelledAt")]
public DateTime? PremiumCancelledAt { get; set; } // ADICIONADO: Data do cancelamento
[BsonElement("lastLoginAt")]
public DateTime LastLoginAt { get; set; } = DateTime.UtcNow;
[BsonElement("qrHistoryIds")]
public List<string> QRHistoryIds { get; set; } = new();
[BsonElement("stripeCustomerId")]
public string? StripeCustomerId { get; set; }
[BsonElement("stripeSubscriptionId")]
public string? StripeSubscriptionId { get; set; }
[BsonElement("subscriptionStartedAt")]
public DateTime? SubscriptionStartedAt { get; set; } // Data de início da assinatura atual
[BsonElement("preferredLanguage")]
public string PreferredLanguage { get; set; } = "pt-BR";
[BsonElement("dailyQRCount")]
public int DailyQRCount { get; set; } = 0;
[BsonElement("lastQRDate")]
public DateTime LastQRDate { get; set; } = DateTime.UtcNow.Date;
[BsonElement("totalQRGenerated")]
public int TotalQRGenerated { get; set; } = 0;
}
}