//--------------------------------------------------------------------
//     此代码由T4模板自动生成  byzhouhang 20210918
//	   生成时间 2022-08-17 14:36:04 
//     对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
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("ReadingTableQuestionTrial")]	
	 public class ReadingTableQuestionTrial : Entity, IAuditAdd
	 {
		/// <summary>
        /// TrialId
        /// </summary>
		public Guid TrialId { get; set; }

		/// <summary>
		/// 项目问题的Id ReadingQuestionTrial的id
		/// </summary>
		public Guid ReadingQuestionId { get; set; }
	
		/// <summary>
        /// Type
        /// </summary>
		public string Type { get; set; } = string.Empty;

		/// <summary>
		/// ParentId
		/// </summary>
		public Guid? ParentId { get; set; }
	
		/// <summary>
        /// ParentTriggerValue
        /// </summary>
		public string ParentTriggerValue { get; set; } = string.Empty;

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

		/// <summary>
		/// IsRequired
		/// </summary>
		public IsRequired IsRequired { get; set; }
	
		/// <summary>
        /// ShowOrder
        /// </summary>
		public int ShowOrder { get; set; }
	
		/// <summary>
        /// TypeValue
        /// </summary>
		public string TypeValue { get; set; } = string.Empty;

		/// <summary>
		/// IsEnable
		/// </summary>
		public bool IsEnable { get; set; }
	
		/// <summary>
        /// CreateTime
        /// </summary>
		public DateTime CreateTime { get; set; }
	
		/// <summary>
        /// CreateUserId
        /// </summary>
		public Guid CreateUserId { get; set; }
	
		/// <summary>
        /// Remark
        /// </summary>
		public string Remark { get; set; } = string.Empty;

		/// <summary>
		/// RelevanceId
		/// </summary>
		public Guid? RelevanceId { get; set; }
	
		/// <summary>
        /// RelevanceValue
        /// </summary>
		public string RelevanceValue { get; set; } = string.Empty;

		/// <summary>
		/// ShowQuestion
		/// </summary>
		public int ShowQuestion { get; set; }
	
		/// <summary>
        /// MaxRowCount
        /// </summary>
		public int? MaxRowCount { get; set; }
	
		/// <summary>
        /// DataTableName
        /// </summary>
		public string DataTableName { get; set; } = string.Empty;

		/// <summary>
		/// DataTableColumn
		/// </summary>
		public string DataTableColumn { get; set; }

		/// <summary>
		/// TableQuestionType
		/// </summary>
		public TableQuestionType? TableQuestionType { get; set; }
	
		/// <summary>
        /// DependParentId
        /// </summary>
		public Guid? DependParentId { get; set; }

		/// <summary>
		/// IsDepend
		/// </summary>
		public IsDepend IsDepend { get; set; }


		/// <summary>
		/// 项目标准Id
		/// </summary>
		public Guid TrialCriterionId { get; set; }

		/// <summary>
		/// 问题标识
		/// </summary>
		public QuestionMark? QuestionMark { get; set; }


		/// <summary>
		/// 字典code
		/// </summary>
		public string DictionaryCode { get; set; } = string.Empty;

		/// <summary>
		/// 数值类型
		/// </summary>
	    public ValueOfType? ValueType { get; set; }

		/// <summary>
		/// 单位
		/// </summary>
		public ValueUnit? Unit { get; set; }

		/// <summary>
		/// 自定义单位
		/// </summary>
		public string CustomUnit { get; set; } = string.Empty;

		/// <summary>
		/// 自定义计算标记
		/// </summary>
		public CustomCalculateMark? CustomCalculateMark { get; set; }

		/// <summary>
		/// 限制编辑
		/// </summary>
		public LimitEdit LimitEdit { get; set; } = LimitEdit.None;

		/// <summary>
		/// 自定义计算标记
		/// </summary>
		public string CalculateQuestions { get; set; } = "[]";

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

		/// <summary>
		/// 数据来源
		/// </summary>
		public DataSources DataSource { get; set; } = DataSources.ManualEntry;

		/// <summary>
		/// 最大答案长度
		/// </summary>
		public int? MaxAnswerLength { get; set; }

		/// <summary>
		/// 文件类型
		/// </summary>
		public string? FileType { get; set; }

        /// <summary>
        /// 问题分类
        /// </summary>
        public QuestionClassify? QuestionClassify { get; set; }

        [JsonIgnore]
		[ForeignKey("DependParentId")]
		public ReadingTableQuestionTrial DependParentQuestion { get; set; }

		[JsonIgnore]
		[ForeignKey("ReadingQuestionId")]
		public ReadingQuestionTrial ReadingQuestionTrial { get; set; }

		/// <summary>
		/// 复制病灶的时候 是否复制这个问题
		/// </summary>
		public bool IsCopy { get; set; } = false;

		/// <summary>
		/// 系统表格问题Id
		/// </summary>
		public Guid? SystemTableQuestionId { get; set; }


		[NotMapped]
		public List<string> ParentTriggerValueList
		{
			get
			{
				try
				{
					return this.ParentTriggerValue.Split(',').ToList();
				}
				catch (Exception)
				{

					return new List<string>();
				}
			}

		}

	
		[NotMapped]
		public List<string> RelevanceValueList
		{
			get
			{
				try
				{
					return this.RelevanceValue.Split(',').ToList();
				}
				catch (Exception)
				{

					return new List<string>();
				}
			}

		}

		
	    [NotMapped]
		public List<CalculateInfo> CalculateQuestionList
		{
			get
			{
				try
				{
					var result = JsonConvert.DeserializeObject<List<CalculateInfo>>(this.CalculateQuestions);
					return result == null ? new List<CalculateInfo>() : result;
				}
				catch (Exception)
				{

					return new List<CalculateInfo>();
				}

			}
		}

	}

	  
}