using Newtonsoft.Json;

namespace IRaCIS.Core.Application.Contracts.Dicom.DTO
{
    public class DicomSeriesDTO
    {




        public bool IsDicom { get; set; } = true;

        public bool IsBeMark { get; set; } = false;

        public Guid Id { get; set; }
        public Guid StudyId { get; set; }
        public string StudyInstanceUid { get; set; } = String.Empty;
        public string SeriesInstanceUid { get; set; } = String.Empty;
        public int SeriesNumber { get; set; }
        public DateTime? SeriesTime { get; set; }
        public string Modality { get; set; } = String.Empty;
        public string Description { get; set; }=String.Empty;
        public int InstanceCount { get; set; }

        public string NoneDicomFileFirstFile { get; set; } = String.Empty;
        public string SliceThickness { get; set; } = String.Empty;

        public Guid TrialId { get; set; }

        public Guid SubjectId { get; set; }
        public Guid SubjectVisitId { get; set; }
      
        public Guid CreateUserId { get; set; }
        public DateTime CreateTime { get; set; }
        public Guid UpdateUserId { get; set; }
        public DateTime UpdateTime { get; set; }

        public bool IsDeleted { get; set; }
        public bool IsReading { get; set; } = true;


        public List<InstanceBasicInfo> InstanceInfoList { get; set; }=new List<InstanceBasicInfo>();

        public bool IsExistMutiFrames => InstanceInfoList.Any(t => t.NumberOfFrames > 1);


        //存放在instance 上面
        public string? WindowCenter => InstanceInfoList.FirstOrDefault()?.WindowCenter;
        public string? WindowWidth => InstanceInfoList.FirstOrDefault()?.WindowWidth;

        public string ImageResizePath { get; set; } 
    }

    public class StudyInstanceInfo
    {

        public int ShowOrder { get; set; }


        public decimal RowIndex { get; set; }

        public Guid? SeriesId { get; set; }

        public Guid? StudyId { get; set; }
        public Guid? InstanceId { get; set; }

        public int? NumberOfFrames { get; set; }
    }
    public class InstanceBasicInfo
    {
        public Guid Id { get; set; }

        public string Path { get; set; }

        public string HtmlPath { get; set; }

        public int NumberOfFrames { get; set; }

        public int InstanceNumber { get; set; }

        public Guid? StudyId { get; set; }

        public Guid? SeriesId { get; set; }

        [JsonIgnore]
        public int ShowOrder { get; set; }
        [JsonIgnore]
        public decimal RowIndex { get; set; }
        [JsonIgnore]
        public string WindowCenter { get; set; }
        [JsonIgnore] 
        public string WindowWidth { get; set; }
    }

    public class DicomSeriesWithLabelDTO : DicomSeriesDTO
    {
        public bool HasLabel { get; set; } = false;
        public bool KeySeries { get; set; } = false;
    }
}