using System;
using IRaCIS.Core.Domain.Share;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Collections.Generic;
using System.Linq;

namespace IRaCIS.Core.Domain.Models
{
    ///<summary>
    /// 临床资料项目配置
    ///</summary>
    [Table("ClinicalDataTrialSet")]
    public class ClinicalDataTrialSet : BaseAddAuditEntity
    {
        #region 导航属性

        [JsonIgnore]
        public List<ReadingClinicalData> ReadingClinicalDataList { get; set; }

        [JsonIgnore]
        [ForeignKey("TrialId")]
        public Trial Trial { get; set; }

        [JsonIgnore]
        public List<TrialClinicalDataSetCriterion> TrialClinicalDataSetCriteriaList { get; set; }

        [JsonIgnore]
        public List<TrialClinicalQuestion> TrialClinicalQuestionList { get; set; }
        [JsonIgnore]
        [ForeignKey("SystemClinicalDataSetId")]
        public ClinicalDataSystemSet? ClinicalDataSystemSet { get; set; }
        #endregion

        public Guid TrialId { get; set; }

        /// <summary>
        /// 名称
        /// </summary>
        public string ClinicalDataSetName { get; set; }

		/// <summary>
		/// 英文名称
		/// </summary>
		public string ClinicalDataSetEnName { get; set; } = string.Empty;

		/// <summary>
		/// 临床级别
		/// </summary>
		public ClinicalLevel ClinicalDataLevel { get; set; }


        /// <summary>
        /// 上传方式
        /// </summary>
        public ClinicalUploadType ClinicalUploadType { get; set; }


        /// <summary>
        /// 系统的ClinicalDataSetId
        /// </summary>
        public Guid? SystemClinicalDataSetId { get; set; }

		/// <summary>
		/// SystemClinicalDataSetId
		/// </summary>


        /// <summary>
        /// 是否确认
        /// </summary>
        public bool IsConfirm { get; set; }


        /// <summary>
        /// 是否应用
        /// </summary>
        public bool IsApply { get; set; } = false;

        /// <summary>
        /// 上传角色
        /// </summary>
        public UploadRole UploadRole { get; set; }

        /// <summary>
        /// 模板文件名称
        /// </summary>
        public string FileName { get; set; }

        /// <summary>
        /// 文件路径
        /// </summary>
        public string Path { get; set; }



		public string CriterionEnumListStr { get; set; } = String.Empty;

        public List<int> CriterionEnumList => CriterionEnumListStr.Split('|', StringSplitOptions.RemoveEmptyEntries).Where(t => !string.IsNullOrEmpty(t) && int.TryParse(t.Trim(), out var s)).Select(t => int.Parse(t.Trim())).ToList();

    }






}