using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace FutureMailAPI.Models
{
    public class TimeCapsule
    {
        [Key]
        public int Id { get; set; }
        
        [Required]
        public int UserId { get; set; }
        
        [Required]
        public int SentMailId { get; set; }
        
        // 胶囊位置信息(X, Y, Z坐标)
        public double PositionX { get; set; }
        public double PositionY { get; set; }
        public double PositionZ { get; set; }
        
        // 胶囊大小
        public double Size { get; set; } = 1.0;
        
        // 胶囊颜色
        [MaxLength(20)]
        public string? Color { get; set; }
        
        // 胶囊透明度
        public double Opacity { get; set; } = 1.0;
        
        // 胶囊旋转角度
        public double Rotation { get; set; } = 0;
        
        // 胶囊状态: 0-未激活, 1-漂浮中, 2-即将到达, 3-已开启
        [Required]
        public int Status { get; set; } = 0;
        
        // 胶囊类型: 0-普通, 1-特殊, 2-限时
        [Required]
        public int Type { get; set; } = 0;
        
        // 创建时间
        public DateTime CreatedAt { get; set; } = DateTime.UtcNow;
        
        // 导航属性
        [ForeignKey("UserId")]
        public virtual User User { get; set; } = null!;
        
        [ForeignKey("SentMailId")]
        public virtual SentMail SentMail { get; set; } = null!;
    }
}