using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace Api.Models { public class User { [Key] public int Id { get; set; } [Required] [StringLength(255)] public string Email { get; set; } = string.Empty; [StringLength(255)] public string? FirstName { get; set; } [StringLength(255)] public string? LastName { get; set; } [StringLength(500)] public string? ProfilePictureUrl { get; set; } [Required] public DateTime CreatedAt { get; set; } = DateTime.UtcNow; public DateTime? LastLoginAt { get; set; } public bool IsActive { get; set; } = true; // Navigation property for OAuth providers public virtual ICollection OAuthProviders { get; set; } = new List(); } public class UserOAuthProvider { [Key] public int Id { get; set; } [Required] public int UserId { get; set; } [Required] public OAuthProvider Provider { get; set; } [Required] [StringLength(255)] public string ProviderId { get; set; } = string.Empty; [StringLength(255)] public string? ProviderEmail { get; set; } [StringLength(255)] public string? ProviderName { get; set; } public DateTime CreatedAt { get; set; } = DateTime.UtcNow; public DateTime? LastUsedAt { get; set; } // Navigation property [ForeignKey("UserId")] public virtual User User { get; set; } = null!; } public enum OAuthProvider { Microsoft = 1, Google = 2, PocketId = 3 // Add more providers as needed } }