namespace IRaCIS.Core.Domain.Models;

[Comment("分割文件版本")]
[Table("SegmentationVersion")]
public class SegmentationVersion : BaseAddAuditEntity
{
    #region 导航属性


    [JsonIgnore]
    [ForeignKey("SegmentationId")]
    public Segmentation Segmentation { get; set; }
    #endregion

    /// <summary>
    /// 分割分组Id
    /// </summary>
    public Guid SegmentationId { get; set; }

    /// <summary>
    /// 版本号，默认为1，每次更新分割分组时版本号加1
    /// </summary>
    public int Version { get; set; } = 1;

    /// <summary>
    /// 分组的Json
    /// </summary>
    [MaxLength]
    public string SegmentationJson { get; set; }

    /// <summary>
    /// SEG文件的URL地址
    /// </summary>
    [MaxLength]
    public string SEGUrl { get; set; } = string.Empty;

    /// <summary>
    /// 文件大小，单位字节
    /// </summary>
    public long FileSize { get; set; } = 0;

    /// <summary>
    /// 版本开始时间
    /// </summary>
    public DateTime? StartTime { get; set; }

    /// <summary>
    /// SgenmentList
    /// </summary>
    [MaxLength]
    public List<SegmentVersionData> SegmentList { get; set; } = new List<SegmentVersionData>();



}

public class SegmentVersionData: ISegment
{
    /// <summary>
    /// 这个时间很总要要记录
    /// </summary>
    public DateTime CreateTime { get; set; }

    /// <summary>
    /// 分割Id
    /// </summary>
    public Guid SegmentationId { get; set; }

    /// <summary>
    /// 任务Id
    /// </summary>
    public Guid VisitTaskId { get; set; }

    /// <summary>
    /// 分割的序号
    /// </summary>
    public int SegmentNumber { get; set; }

    /// <summary>
    /// 分割的Json
    /// </summary>
    [MaxLength]
    public string SegmentJson { get; set; } = string.Empty;

    /// <summary>
    /// SegmentName
    /// </summary>
    public string SegmentName { get; set; } = string.Empty;

    /// <summary>
    /// 颜色
    /// </summary>
    public string ColorRgb { get; set; } = string.Empty;

    /// <summary>
    /// 均值
    /// </summary>
    public decimal? AvgValue { get; set; }

    /// <summary>
    /// 最大值
    /// </summary>
    public decimal? MaxValue { get; set; }

    /// <summary>
    /// 最小值
    /// </summary>
    public decimal? MinValue { get; set; }

    /// <summary>
    /// 方差
    /// </summary>
    public decimal? Variance { get; set; }

    /// <summary>
    /// 中位数
    /// </summary>
    public decimal? Median { get; set; }

    /// <summary>
    /// 体积
    /// </summary>
    public decimal? Volume { get; set; }

    /// <summary>
    /// 长径
    /// </summary>
    public decimal? MajorAxis { get; set; }

    /// <summary>
    /// 短径
    /// </summary>
    public decimal? ShortAxis { get; set; }

    /// <summary>
    /// Peak
    /// </summary>
    public decimal? Peak { get; set; }

    /// <summary>
    /// TLG
    /// </summary>
    public decimal? TLG { get; set; }

    /// <summary>
    /// MTV
    /// </summary>
    public decimal? MTV { get; set; }

    /// <summary>
    /// 是否锁定
    /// </summary>
    public bool IsLock { get; set; } = false;
}
