//--------------------------------------------------------------------
//     此代码由T4模板自动生成  byzhouhang 20210918
//	   生成时间 2021-12-23 13:21:04 
//     对此文件的更改可能会导致不正确的行为，并且如果重新生成代码，这些更改将会丢失。
//--------------------------------------------------------------------

using System.ComponentModel.DataAnnotations;
using IRaCIS.Core.Domain.Share;
namespace IRaCIS.Core.Application.Contracts
{

    public class TrialSurveyInitInfo
    {
        public Guid TrialId { get; set; }
        public string Sponsor { get; set; } = string.Empty;

        //研究方案号
        public string ResearchProgramNo { get; set; } = string.Empty;

        //实验名称
        public string ExperimentName { get; set; } = string.Empty;

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

        public Guid IndicationTypeId { get; set; }

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

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

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

        public List<TrialSiteForSelect> TrialSiteSelectList { get; set; } = new List<TrialSiteForSelect>();

    }

    public class TrialSiteForSelect
    {
        public Guid Id { get; set; }
        public Guid TrialId { get; set; }

        public Guid SiteId { get; set; }

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

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


        public bool IsHaveSiteSurveyRecord { get; set; }
    }


    public class TrialSiteSimpleSelect
    {

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

    }

    public class LoginReturnDTO
    {
        public TrialSurveyInitInfo TrialInfo { get; set; } = new TrialSurveyInitInfo();

        public TrialSiteSurveyView TrialSiteSurvey { get; set; } = new TrialSiteSurveyView();

        public List<TrialSiteEquipmentSurveyView> TrialSiteEquipmentSurveyList { get; set; } = new List<TrialSiteEquipmentSurveyView>();

        public List<TrialSiteUserSurveyView> TrialSiteUserSurveyList { get; set; } = new List<TrialSiteUserSurveyView>();
    }

    public class TrialSiteUserSurveyAllDTO : TrialSiteUserSurveyView
    {
        public TrialSiteSurveyView TrialSiteSurvey { get; set; }
    }


    public class TrialSiteUserSurveyExportQueryDto
    {
        [NotDefault]
        public Guid TrialId { get; set; }
        public Guid? SiteId { get; set; }

        public Guid? UserTypeId { get; set; }


        public bool? IsGenerateAccount { get; set; }

        public TrialSiteUserStateEnum? State { get; set; }

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


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

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

    }


    public class TrialSiteUserSurveyAllQuery : PageInput
    {
        [NotDefault]
        public Guid TrialId { get; set; }
        public Guid? SiteId { get; set; }

        public Guid? UserTypeId { get; set; }


        public bool? IsGenerateAccount { get; set; }
        public Guid? TrialRoleNameId { get; set; }

        public TrialSiteUserStateEnum? State { get; set; }

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


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

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


    }


    /// <summary> TrialSiteSurveyView  列表视图模型 </summary>
    public class TrialSiteSurveyView
    {

        public string TrialSiteCode { get; set; } = String.Empty;
        public string TrialSiteAliasName { get; set; } = String.Empty;

        public string SiteName { get; set; } = string.Empty;
        public bool IsDeleted { get; set; }
        public Guid Id { get; set; }
        public Guid TrialId { get; set; }
        public Guid SiteId { get; set; }
        public DateTime CreateTime { get; set; }
        public Guid CreateUserId { get; set; }
        public DateTime UpdateTime { get; set; }
        public Guid UpdateUserId { get; set; }
        public string UserName { get; set; } = string.Empty;
        public string Phone { get; set; } = string.Empty;
        public string Email { get; set; } = string.Empty;
        public int AverageEngravingCycle { get; set; }
        public bool IsConfirmImagingTechnologist { get; set; }
        public string NotConfirmReson { get; set; } = string.Empty;
        public int EfficacyEvaluatorType { get; set; }
        public bool IsFollowStudyParameters { get; set; }
        public string NotFollowReson { get; set; } = string.Empty;

        public TrialSiteSurveyEnum State { get; set; }

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

        public UserInfoBasic ReviewerUser { get; set; }
        public UserInfoBasic PreliminaryUser { get; set; }

        public Guid? PreliminaryUserId { get; set; }

        public Guid? ReviewerUserId { get; set; }


        public DateTime? PreliminaryTime { get; set; }

        public DateTime? ReviewerTime { get; set; }




    }

    public class TrialSiteSurveySelectView
    {
        public Guid Id { get; set; }
        public TrialSiteSurveyEnum State { get; set; }
        public DateTime CreateTime { get; set; }
        public bool IsDeleted { get; set; }

        public string Phone { get; set; } = string.Empty;
        public string Email { get; set; } = string.Empty;

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

    }

    public class TrialSiteSurveySelectquery
    {
        public Guid TrialId { get; set; }

        public Guid SiteId { get; set; }

        public Guid TrialSiteSurveyId { get;set; }
    }

    ///<summary>TrialSiteSurveyQuery  列表查询参数模型</summary>
    public class TrialSiteSurveyQuery
    {
        public Guid TrialId { get; set; }

        public Guid SiteId { get; set; }

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

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

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

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

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

    }

    public class VerifyEmialGetDoctorInfoInDto
    {
        public string VerificationCode { get; set; }

        public string EmailOrPhone { get; set; }
    }

    public class VerifyEmialGetDoctorInfoOutDto
    {
        public Guid? DoctorId { get; set; }

        public ReviewerInformationConfirmStatus? ReviewStatus { get; set; }

        public string Token { get; set; }
    }

    public class SendEmialVerifyCodeInDto
    {
        public string Email { get; set; } = string.Empty;
    }

    public class SiteSurveySendVerifyCode
    {
        //public VerifyType verificationType { get; set; }
        public string Email { get; set; } = string.Empty;

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

    }

    public class LoginDto
    {
        public Guid TrialId { get; set; }

        public Guid SiteId { get; set; }


        public bool IsUpdate { get; set; }


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

        public VerifyType verificationType { get; set; }
        public string EmailOrPhone { get; set; } = string.Empty;

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


    ///<summary> TrialSiteSurveyAddOrEdit  列表查询参数模型</summary>
    public class TrialSiteSurveyAddOrEdit
    {
        public Guid? Id { get; set; }
        public Guid TrialId { get; set; }
        public Guid SiteId { get; set; }
        public string UserName { get; set; } = string.Empty;
        public string Phone { get; set; } = string.Empty;
        public string Email { get; set; } = string.Empty;
        public int AverageEngravingCycle { get; set; }
        public bool IsConfirmImagingTechnologist { get; set; }
        public string NotConfirmReson { get; set; } = string.Empty;
        public int EfficacyEvaluatorType { get; set; }
        public bool IsFollowStudyParameters { get; set; }
        public string NotFollowReson { get; set; } = string.Empty;


    }


    public class TrialSiteSubmitBackCommand
    {
        [NotDefault]
        public Guid TrialId { get; set; }
        [NotDefault]
        public Guid TrialSiteSurveyId { get; set; }

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

        public string RouteUrl { get; set; }
    }

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


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

        public List<TrialSiteUserSurveyView> UserList { get; set; } = new List<TrialSiteUserSurveyView>();
    }


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

        public Guid TrialSiteSurveyId { get; set; }

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

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

        public List<TrialSiteUserSurveyView> UserList { get; set; } = new List<TrialSiteUserSurveyView>();
    }


    public class TrialSiteSurvyeSubmitDTO
    {
        [NotDefault]
        public Guid TrialId { get; set; }
        [NotDefault]
        public Guid TrialSiteSurveyId { get; set; }


        public string BaseUrl { get; set; } = string.Empty;
        public string RouteUrl { get; set; } = string.Empty;
    }

    public class TrialSiteSurveyQueryDTO : PageInput
    {
        [NotDefault]
        public Guid TrialId { get; set; }

        public Guid? SiteId { get; set; }

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

      

        public TrialSiteSurveyEnum? State { get; set; }

        public bool? IsDeleted { get; set; }

        public DateTime? UpdateTimeBegin { get; set; }

        public DateTime? UpdateTimeEnd { get; set; }
    }

    public class CopyTrialSiteSurveyDTO
    {
        public Guid TrialSiteSurveyId { get; set; }
        public string UserName { get; set; } = string.Empty;
        public string Phone { get; set; } = string.Empty;
        public string Email { get; set; } = string.Empty;
    }


}


