using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace IRaCIS.Core.Domain.Models
{
    [Table("DicomSeries")]
    public class DicomSeries : Entity, IAuditAdd, IAuditUpdate, ISoftDelete
    {
        [JsonIgnore]
        [ForeignKey("StudyId")]
        public DicomStudy DicomStudy { get; set; }

        [JsonIgnore]
        public List<DicomInstance> DicomInstanceList { get; set; }

        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public Guid SeqId { get; set; }
        public Guid StudyId { get; set; }
        public string StudyInstanceUid { get; set; }
        public string SeriesInstanceUid { get; set; }
        public int SeriesNumber { get; set; }
        public DateTime? SeriesTime { get; set; }
        public string Modality { get; set; }
        public string Description { get; set; }
        public int InstanceCount { get; set; }
        public string SliceThickness { get; set; }

        public string ImagePositionPatient { get; set; }
        public string ImageOrientationPatient { get; set; }
        public string BodyPartExamined { get; set; }
        public string SequenceName { get; set; }
        public string ProtocolName { get; set; }
        public string ImagerPixelSpacing { get; set; }

        public string AcquisitionTime { get; set; } = string.Empty;
        public string AcquisitionNumber { get; set; } = string.Empty;
        public string TriggerTime { get; set; } = string.Empty;

        public Guid TrialId { get; set; }
        public Guid SiteId { get; set; }
        public Guid SubjectId { get; set; }
        public Guid SubjectVisitId { get; set; }


        public string BodyPartForEdit { get; set; } = string.Empty;

        public Guid CreateUserId { get; set; }
        public DateTime CreateTime { get; set; } = DateTime.Now;
        public Guid UpdateUserId { get; set; }
        public DateTime UpdateTime { get; set; } = DateTime.Now;

        public DateTime? DeletedTime { get; set; }

        public Guid? DeleteUserId { get; set; }
        public bool IsDeleted {get;set;}
        public bool IsReading { get; set; } = true;

        public string ImageResizePath { get; set; }=string.Empty;

    }
}
