using IRaCIS.Core.Domain.Share;
using System.ComponentModel.DataAnnotations;

namespace IRaCIS.Core.Application.Contracts.DTO
{


    public class SiteCrcQueryDTO : PageInput
    {
        public Guid TrialId { get; set; } = Guid.Empty;
        public string SiteName { get; set; } = String.Empty;
        public string TrialSiteAliasName { get; set; } = String.Empty;

        public bool? IsDeleted { get; set; }

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

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


        public string? Country { get; set; }

    }

    public class SiteCRCExportQueryDTO
    {
        public Guid TrialId { get; set; } = Guid.Empty;
        public string SiteName { get; set; } = String.Empty;
        public string TrialSiteAliasName { get; set; } = String.Empty;

        public bool? IsDeleted { get; set; }

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

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

    public class TrialSiteCommand
    {
        public Guid TrialId { get; set; }
        public Guid? SiteId { get; set; }

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

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

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

        public string Country { get; set; }

        public bool IsDeleted { get; set; } = true;

    }

    public class EditTrialSiteCommand
    {

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

        public Guid Id { get; set; }


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

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

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

        public string Country { get; set; }

        public bool IsDeleted { get; set; }

    }

    public class AssginSiteCRCCommand
    {
        [NotDefault]
        public Guid TrialId { get; set; }
        [NotDefault]
        public Guid TrialSiteId { get; set; }
        public Guid UserId { get; set; }

    }

    public class AssginSiteCRCListDTO : AssginSiteCRCCommand
    {
        public Guid UserTypeId { get; set; }
        public string UserType { get; set; } = String.Empty;
        public UserTypeEnum UserTypeEnum { get; set; }
        public string OrganizationName { get; set; } = String.Empty;
        //public string UserRealName { get; set; }
        public string UserName { get; set; } = String.Empty;
        public DateTime UpdateTime { get; set; } = DateTime.Now;

        public bool IsSelect { get; set; }


        public string Phone { get; set; } = String.Empty;
        public string EMail { get; set; } = string.Empty;

        public DateTime? CreateTime { get; set; } = DateTime.Now;
        public string UserRealName { get; set; } = String.Empty;

    }


    public class TrialSiteQuery : PageInput
    {
        public Guid TrialId { get; set; }

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

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

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


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

    }

    public class TrialSiteSelect
    {
        public Guid SiteId { get; set; }
        public string SiteName { get; set; } = String.Empty;

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

        public string Country { get; set; }
    }

    public class TrialSiteScreeningDTO
    {
        public Guid Id { get; set; }
        public string SiteName { get; set; } = String.Empty;

        public string AliasName { get; set; } = string.Empty;
        public string SiteCode { get; set; } = String.Empty;
        public string City { get; set; } = String.Empty;
        public string Country { get; set; } = String.Empty;
        public Guid? HospitalId { get; set; }


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

        public bool IsSelect { get; set; }
    }


    public class TrialSelectUserBasicInfo
    {
        public Guid UserRoleId { get; set; }

        public string FullName { get; set; }

        public string UserName { get; set; }

        public string Email { get; set; }

        public string Phone { get; set; }
    }
}