using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace IRaCIS.Core.Application.Service.Reading.Dto
{

	public class AddOrUpdateReadingQuestionCriterionTrialInDto
	{
		public Guid? Id { get; set; }

		[NotDefault]
		public Guid TrialId { get; set; }

		/// <summary>
		/// 标准
		/// </summary>
		public string CriterionName { get; set; }

		/// <summary>
		/// 是否启用
		/// </summary>
		public bool IsEnable { get; set; }
	}

	public class AddOrUpdateReadingQuestionCriterionSystemInDto
    {
		public Guid? Id { get; set; }

		/// <summary>
		/// 标准ID
		/// </summary>
		public Guid CriterionId { get; set; }

		/// <summary>
		/// 标准
		/// </summary>
		public string CriterionName { get; set; }

		/// <summary>
		/// 是否启用
		/// </summary>
		public bool IsEnable { get; set; }
	}

	/// <summary>
	/// 
	/// </summary>
	public class ReadingQuestionCriterionSystemViewInDto:PageInput
	{
		public string CriterionName { get; set; }=String.Empty;
	}

	public class CriterionList
	{
		public Guid Id { get; set; }

		public string Value { get; set; }
	}

	public class SetSystemReadingQuestionCriterionIsIsEnable
	{
		[NotDefault]
		public Guid Id { get; set; }

	
		public bool IsEnable { get; set; }
	}

	/// <summary>
	/// 
	/// </summary>
	public class ReadingQuestionCriterionTrialViewInDto : PageInput
	{
		[NotDefault]
		public Guid TrialId { get; set; }

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


	public class ReadingQuestionTrialView
	{

		public Guid Id { get; set; }

		/// <summary>
		/// 系统标准Id
		/// </summary>
		public Guid ReadingQuestionCriterionTrialId { get; set; }

		public Guid TrialId { get; set; }

		/// <summary>
		/// 类型
		/// </summary>
		public string Type { get; set; }

		/// <summary>
		/// 父问题触发
		/// </summary>
		public string ParentTriggerValue { get; set; }

		/// <summary>
		/// 问题名称
		/// </summary>
		public string QuestionName { get; set; }

		/// <summary>
		/// 是否是必须
		/// </summary>
		public bool IsRequired { get; set; }

		/// <summary>
		/// 排序
		/// </summary>
		public int ShowOrder { get; set; }

		/// <summary>
		/// 父问题ID
		/// </summary>
		public Guid? ParentId { get; set; }


		/// <summary>
		/// 类型值
		/// </summary>
		public string TypeValue { get; set; }

		public bool IsEnable { get; set; }

		public string ParentQuestionName { get; set; }
	}

	public class ReadingQuestionSystemView
	{
		/// <summary>
		/// Id
		/// </summary>
		public Guid Id { get; set; }

		/// <summary>
		/// 系统标准Id
		/// </summary>
		public Guid ReadingQuestionCriterionSystemId { get; set; }

		/// <summary>
		/// 类型
		/// </summary>
		public string Type { get; set; }

		/// <summary>
		/// 父问题触发
		/// </summary>
		public string ParentTriggerValue { get; set; }

		/// <summary>
		/// 问题名称
		/// </summary>
		public string QuestionName { get; set; }

		/// <summary>
		/// 是否是必须
		/// </summary>
		public bool IsRequired { get; set; }

		/// <summary>
		/// 排序
		/// </summary>
		public int ShowOrder { get; set; }

		/// <summary>
		/// 父问题ID
		/// </summary>
		public Guid? ParentId { get; set; }

		public string ParentQuestionName { get; set; }


		/// <summary>
		/// 类型值
		/// </summary>
		public string TypeValue { get; set; }

		public bool IsEnable { get; set; }
	}


	public class ReadingQuestionTrialViewInDto : PageInput
	{
		/// <summary>
		/// 系统标准Id
		/// </summary>
		[NotDefault]
		public Guid ReadingQuestionCriterionTrialId { get; set; }

		/// <summary>
		/// 类型
		/// </summary>
		public string Type { get; set; } = string.Empty;


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

	/// <summary>
	/// 获取其他问题返回的Dto
	/// </summary>
	public class CriterionOtherQuestionOutDto
	{
		public Guid QuestionId { get; set; }

		/// <summary>
		/// 问题名称
		/// </summary>
		public string QuestionName { get; set; }

		/// <summary>
		/// 类型值
		/// </summary>
		public string TypeValue { get; set; }
	}
	public class GetTrialCriterionOtherQuestionInDto
	{
		[NotDefault]
		public Guid ReadingQuestionCriterionTrialId { get; set; }

		/// <summary>
		/// 当前ID
		/// </summary>
		public Guid? Id { get; set; }
	}

	public class GetSystemCriterionOtherQuestionInDto
	{
		[NotDefault]
		public Guid ReadingQuestionCriterionSystemId { get; set; }

		/// <summary>
		/// 当前ID
		/// </summary>
		public Guid? Id { get; set; }
	}

	public class ReadingQuestionSystemViewInDto : PageInput
	{
		/// <summary>
		/// 系统标准Id
		/// </summary>
		[NotDefault]
		public Guid ReadingQuestionCriterionSystemId { get; set; }

		/// <summary>
		/// 类型
		/// </summary>
		public string Type { get; set; } = string.Empty;


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

	public class AddOrUpdateReadingQuestionSystemInDto
	{
		/// <summary>
		/// Id
		/// </summary>
		public Guid? Id { get; set; }

		/// <summary>
		/// 系统标准Id
		/// </summary>
		public Guid ReadingQuestionCriterionSystemId { get; set; }

		/// <summary>
		/// 类型
		/// </summary>
		public string Type { get; set; }

		/// <summary>
		/// 父问题触发
		/// </summary>
		public string ParentTriggerValue { get; set; } = string.Empty;

		/// <summary>
		/// 问题名称
		/// </summary>
		public string QuestionName { get; set; }

		/// <summary>
		/// 是否是必须
		/// </summary>
		public bool IsRequired { get; set; } = false;

		/// <summary>
		/// 排序
		/// </summary>
		public int ShowOrder { get; set; } = 0;

		/// <summary>
		/// 父问题ID
		/// </summary>
		public Guid? ParentId { get; set; }


		/// <summary>
		/// 类型值
		/// </summary>
		public string TypeValue { get; set; }

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



	public class AddOrUpdateReadingQuestionTrialInDto
	{
		/// <summary>
		/// Id
		/// </summary>
		public Guid? Id { get; set; }


		public Guid TrialId { get; set; }

		/// <summary>
		/// 系统标准Id
		/// </summary>
		public Guid ReadingQuestionCriterionTrialId { get; set; }

		/// <summary>
		/// 类型
		/// </summary>
		public string Type { get; set; }

		/// <summary>
		/// 父问题触发
		/// </summary>
		public string ParentTriggerValue { get; set; } = string.Empty;

		/// <summary>
		/// 问题名称
		/// </summary>
		public string QuestionName { get; set; }

		/// <summary>
		/// 是否是必须
		/// </summary>
		public bool IsRequired { get; set; } = false;

		/// <summary>
		/// 排序
		/// </summary>
		public int ShowOrder { get; set; } = 0;

		/// <summary>
		/// 父问题ID
		/// </summary>
		public Guid? ParentId { get; set; }


		/// <summary>
		/// 类型值
		/// </summary>
		public string TypeValue { get; set; }

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


	public class ReadingQuestionCriterionSystemView
	{
		/// <summary>
		/// 返回的对象
		/// </summary>
		public Guid Id { get; set; }

		/// <summary>
		/// 标准ID
		/// </summary>
		public Guid CriterionId { get; set; }

		/// <summary>
		/// 标准
		/// </summary>
		public string CriterionName { get; set; }

		/// <summary>
		/// 是否启用
		/// </summary>
		public bool IsEnable { get; set; }

		public int QuestionCount { get; set; }
	}


	public class ReadingQuestionCriterionTrialView
	{
		/// <summary>
		/// 返回的对象
		/// </summary>
		public Guid Id { get; set; }

		/// <summary>
		/// 系统标准ID
		/// </summary>
		public Guid? ReadingQuestionCriterionSystemId { get; set; }

		/// <summary>
		/// 标准
		/// </summary>
		public string CriterionName { get; set; }

		/// <summary>
		/// 是否启用
		/// </summary>
		public bool IsEnable { get; set; }

		public int QuestionCount { get; set; }

		/// <summary>
		/// 是否是系统数据
		/// </summary>
		public bool IsSystemData 
		{
			get 
			{
				return this.ReadingQuestionCriterionSystemId != null;
			}
		}
	}
}