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

namespace IRaCIS.Core.Domain.Models
{
    public class TaskInstance : Entity, IAuditAdd, IAuditUpdate
    {
        [JsonIgnore]
        [ForeignKey("SeriesId")]
        public TaskSeries TaskSeries { get; set; }

        [JsonIgnore]
        [ForeignKey("StudyId")]
        public TaskStudy TaskStudy { get; set; }

        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]

        public Guid SeqId { get; set; }
        public Guid StudyId { get; set; }
        public Guid SeriesId { get; set; }
        public string StudyInstanceUid { get; set; }
        public string SeriesInstanceUid { get; set; }
        public string SopInstanceUid { get; set; }
        public int InstanceNumber { get; set; }
        public DateTime? InstanceTime { get; set; }
        public bool CPIStatus { get; set; }
        public int ImageRows { get; set; }
        public int ImageColumns { get; set; }
        public int SliceLocation { get; set; }


        public string SliceThickness { get; set; }
        public int NumberOfFrames { get; set; }
        public string PixelSpacing { get; set; }

        public string ImagerPixelSpacing { get; set; }
        public string FrameOfReferenceUID { get; set; }
        public string WindowCenter { get; set; }
        public string WindowWidth { get; set; }


        public Guid TrialId { get; set; }
        public Guid SubjectId { get; set; }
        public Guid VisitTaskId { get; set; }
        public bool Anonymize { get; set; }
        public string Path { get; set; }

        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 string HtmlPath { get; set; }=string.Empty;

    }
}