//--------------------------------------------------------------------
//     此代码由T4模板自动生成  byzhouhang 20210918
//	   生成时间 2021-12-23 13:21:04 
//     对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//--------------------------------------------------------------------
using IRaCIS.Core.Application.Helper;
using IRaCIS.Core.Domain.Share;
using MiniExcelLibs.Attributes;
using Newtonsoft.Json;
using System.ComponentModel.DataAnnotations;
namespace IRaCIS.Core.Application.Contracts
{
    ///  TrialSiteUserSurveyView  列表视图模型 
    public class TrialSiteUserSurveyView : TrialSiteUserSurveyAddOrEdit
    {
        public bool IsGenerateSuccess { get; set; }
        public DateTime CreateTime { get; set; }
        public Guid CreateUserId { get; set; }
        public DateTime UpdateTime { get; set; }
        public Guid UpdateUserId { get; set; }
        public string UserType { get; set; } = string.Empty;
        [JsonIgnore]
        public TrialSiteUserStateEnum InviteState { get; set; }
        public DateTime? ExpireTime { get; set; }
        [DictionaryTranslateAttribute("YesOrNo")]
        public bool? IsJoin { get; set; }
        public DateTime? ConfirmTime { get; set; }
        public string RejectReason { get; set; } = string.Empty;
        [DictionaryTranslateAttribute("researchUserState")]
        public TrialSiteUserStateEnum State
        {
            get
            {
                if (InviteState == TrialSiteUserStateEnum.HasSend && ExpireTime != null && ExpireTime < DateTime.Now)
                {
                    return TrialSiteUserStateEnum.OverTime;
                }
                else
                {
                    return InviteState;
                }
            }
        }
        public UserTypeEnum? UserTypeEnum { get; set; }
        public Guid? SystemUserId { get; set; }
        public bool? IsHistoryUserOriginDeleted { get; set; }
    }
    public class UserInfoBasic
    {
        public Guid Id { get; set; }
        public string RealName { get; set; } = string.Empty;
        public string UserName { get; set; } = string.Empty;
    }
    ///TrialSiteUserSurveyQuery  列表查询参数模型
    public class TrialSiteUserSurveyQuery
    {
        public Guid TrialSiteSurveyId { get; set; }
        ///// UserName
        //public string Name { get; set; }
        ///// Phone
        //public string Phone { get; set; }
        ///// Email
        //public string Email { get; set; }
    }
    /// TrialSiteUserSurveyAddOrEdit  列表查询参数模型
    public class TrialSiteUserSurveyAddOrEdit
    {
        public Guid? Id { get; set; }
        public Guid TrialSiteSurveyId { get; set; }
        public Guid? UserTypeId { get; set; }
        public string FirstName { get; set; } = string.Empty;
        public string LastName { get; set; } = string.Empty;
        public string Phone { get; set; } = string.Empty;
        public string Email { get; set; } = string.Empty;
        [DictionaryTranslateAttribute("YesOrNo")]
        public bool IsGenerateAccount { get; set; }
        [DictionaryTranslateAttribute("SiteSurvey_UserRoles")]
        public int TrialRoleCode { get; set; }
        public string OrganizationName { get; set; } = string.Empty;
        public bool IsHistoryUser { get; set; }
        public bool? IsHistoryUserDeleted { get; set; }
    }
    public class TrialSiteUserSurverQuery
    {
        public Guid TrialSiteSurveyId { get; set; }
        public bool? IsHistoryUser { get; set; }
    }
    public class TrialSiteUserSurveyVerfyResult
    {
        public Guid TrialSiteUserSurveyId { get; set; }
        public List ErroMsgList { get; set; } = new List();
    }
    public class SiteSurveyUserImportUploadDto
    {
        [NotDefault]
        public Guid TrialId { get; set; }
        public string BaseUrl { get; set; }
        public string RouteUrl { get; set; }
    }
    public class SiteSurveyUserImportDto
    {
        public string TrialSiteCode { get; set; } = string.Empty;
        public string FirstName { get; set; } = string.Empty;
        public string LastName { get; set; } = string.Empty;
        public string Email { get; set; } = string.Empty;
        public string Phone { get; set; } = string.Empty;
        public string OrganizationName { get; set; } = string.Empty;
        [ExcelColumnName("UserType")]
        public string UserTypeStr { get; set; }
        [JsonIgnore]
        public Guid TrialSiteId { get; set; }
        [JsonIgnore]
        public UserTypeEnum UserTypeEnum { get; set; } = UserTypeEnum.Undefined;
        [JsonIgnore]
        public Guid UserTypeId { get; set; }
        [JsonIgnore]
        public bool IsGeneratedAccount { get; set; }
        [JsonIgnore]
        public bool IsJoinedTrial { get; set; }
    }
}